diff --git a/.github/actions/test-cpan-libs/action.yml b/.github/actions/test-cpan-libs/action.yml new file mode 100644 index 000000000..779fbf45a --- /dev/null +++ b/.github/actions/test-cpan-libs/action.yml @@ -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 diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6eeff4da1..db9902bde 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,7 +4,7 @@ updates: directory: '/' schedule: interval: monthly - open-pull-requests-limit: 10 + open-pull-requests-limit: 50 labels: - 'dependencies' - 'gha' diff --git a/.github/docker/packaging/Dockerfile.packaging-plugins-java-alma8 b/.github/docker/packaging/Dockerfile.packaging-plugins-java-alma8 index dadf3fb26..5c691290a 100644 --- a/.github/docker/packaging/Dockerfile.packaging-plugins-java-alma8 +++ b/.github/docker/packaging/Dockerfile.packaging-plugins-java-alma8 @@ -6,9 +6,9 @@ RUN bash -e <.*" ${{ inputs.version_file }} | sed 's/.*\\(.*\\)<\\/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) { diff --git a/.github/workflows/perl-cpan-libraries.yml b/.github/workflows/perl-cpan-libraries.yml index 279b68bbb..a7cf63bdc 100644 --- a/.github/workflows/perl-cpan-libraries.yml +++ b/.github/workflows/perl-cpan-libraries.yml @@ -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() diff --git a/.github/workflows/perl-crypt-argon2.yml b/.github/workflows/perl-crypt-argon2.yml deleted file mode 100644 index 0ce224ca4..000000000 --- a/.github/workflows/perl-crypt-argon2.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/perl-json-path.yml b/.github/workflows/perl-json-path.yml deleted file mode 100644 index 809657437..000000000 --- a/.github/workflows/perl-json-path.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/perl-libssh-session.yml b/.github/workflows/perl-libssh-session.yml deleted file mode 100644 index 81fdf87d7..000000000 --- a/.github/workflows/perl-libssh-session.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/perl-net-curl.yml b/.github/workflows/perl-net-curl.yml deleted file mode 100644 index da66a7758..000000000 --- a/.github/workflows/perl-net-curl.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/perl-openwsman.yml b/.github/workflows/perl-openwsman.yml index 491e3cc67..d37584b45 100644 --- a/.github/workflows/perl-openwsman.yml +++ b/.github/workflows/perl-openwsman.yml @@ -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 }} diff --git a/.github/workflows/perl-vmware-vsphere.yml b/.github/workflows/perl-vmware-vsphere.yml index c6173f886..fe5078560 100644 --- a/.github/workflows/perl-vmware-vsphere.yml +++ b/.github/workflows/perl-vmware-vsphere.yml @@ -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 }} diff --git a/.github/workflows/plugins.yml b/.github/workflows/plugins.yml index 6c4d37f24..690545e65 100644 --- a/.github/workflows/plugins.yml +++ b/.github/workflows/plugins.yml @@ -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 diff --git a/.github/workflows/spellchecker.yml b/.github/workflows/spellchecker.yml index dbaf565f3..7e83bf9dd 100644 --- a/.github/workflows/spellchecker.yml +++ b/.github/workflows/spellchecker.yml @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/AbstractHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/AbstractHandler.java index b94c3ab17..2a45a7f6e 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/AbstractHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/AbstractHandler.java @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/CommandHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/CommandHandler.java index c0f07dc41..117981655 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/CommandHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/CommandHandler.java @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/DiskHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/DiskHandler.java index aa3d12cc9..bf2b663ce 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/DiskHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/DiskHandler.java @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/JobHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/JobHandler.java index 18bd80014..cf9bc6ab7 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/JobHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/JobHandler.java @@ -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); } diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/JobQueueHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/JobQueueHandler.java index 3c18f9a6e..eb1dc94b6 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/JobQueueHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/JobQueueHandler.java @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/SubSystemHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/SubSystemHandler.java index bff97d317..80e6ab326 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/SubSystemHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/SubSystemHandler.java @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/SystemHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/SystemHandler.java index a74d8b46b..d7af64315 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/SystemHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/SystemHandler.java @@ -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; } diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/disk/QyaspolYasp0300PcmlHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/disk/QyaspolYasp0300PcmlHandler.java index 80715ee28..002fff3d2 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/disk/QyaspolYasp0300PcmlHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/impl/disk/QyaspolYasp0300PcmlHandler.java @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/msgqueue/CachedMessageQueueHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/msgqueue/CachedMessageQueueHandler.java index ea8d53de0..6858948b5 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/msgqueue/CachedMessageQueueHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/msgqueue/CachedMessageQueueHandler.java @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/msgqueue/MessageQueueHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/msgqueue/MessageQueueHandler.java index 8431de861..aaa3a8038 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/msgqueue/MessageQueueHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/msgqueue/MessageQueueHandler.java @@ -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 diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/wrkprb/WorkWithProblemHandler.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/wrkprb/WorkWithProblemHandler.java index fa3fbbd7e..c8ab55ba8 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/wrkprb/WorkWithProblemHandler.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/check/handler/wrkprb/WorkWithProblemHandler.java @@ -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++ + "]"; } diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/client/IClient.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/client/IClient.java index 77a22d2bb..91f690fc5 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/client/IClient.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/client/IClient.java @@ -40,5 +40,7 @@ public interface IClient { String getAs400CheckType(); + Integer getAs400Ssl(); + Object getAs400Arg(String key); } diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/client/impl/AbstractClient.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/client/impl/AbstractClient.java index 0c22486d7..96a5bece5 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/client/impl/AbstractClient.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/client/impl/AbstractClient.java @@ -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> argList = new ArrayList>(); @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> getAs400ArgList(String key) { Object arg = this.input.getArg(key); if (arg == null) { diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/check/CheckDispatcher.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/check/CheckDispatcher.java index bce110267..121c2e03e 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/check/CheckDispatcher.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/check/CheckDispatcher.java @@ -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 filter = new ConcurrentHashMap(); @@ -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()); @@ -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); } } diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/check/InputData.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/check/InputData.java index 61916b6c8..1d30ff483 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/check/InputData.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/check/InputData.java @@ -31,6 +31,7 @@ public class InputData { private String password = null; private String host = null; private String command = null; + private Integer ssl = null; Map 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; } diff --git a/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/client/impl/ClientDispatcherImpl.java b/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/client/impl/ClientDispatcherImpl.java index 5fa0b5ca1..868414d08 100644 --- a/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/client/impl/ClientDispatcherImpl.java +++ b/as400/connector.as400/src/main/java/com/centreon/connector/as400/dispatcher/client/impl/ClientDispatcherImpl.java @@ -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); } } diff --git a/as400/connector.as400/src/test/java/com/centreon/connector/as400/check/handler/impl/SystemHandlerTest.java b/as400/connector.as400/src/test/java/com/centreon/connector/as400/check/handler/impl/SystemHandlerTest.java index 9139082be..95bc2ceec 100644 --- a/as400/connector.as400/src/test/java/com/centreon/connector/as400/check/handler/impl/SystemHandlerTest.java +++ b/as400/connector.as400/src/test/java/com/centreon/connector/as400/check/handler/impl/SystemHandlerTest.java @@ -35,7 +35,7 @@ public class SystemHandlerTest { try { SystemStatus as400 = mock(SystemStatus.class); when(as400.getSystemPools()).thenReturn(new Vector().elements()); - SystemHandler sh = new SystemHandler(null, null, null, as400); + SystemHandler sh = new SystemHandler(null, null, null, as400, null); sh.dumpSystem(); } finally { System.setOut(originalOut); diff --git a/dependencies/perl-crypt-argon2/perl-crypt-argon2.yaml b/dependencies/perl-crypt-argon2/perl-crypt-argon2.yaml deleted file mode 100644 index 64b1d63d4..000000000 --- a/dependencies/perl-crypt-argon2/perl-crypt-argon2.yaml +++ /dev/null @@ -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 " -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} diff --git a/dependencies/perl-json-path/perl-json-path.yaml b/dependencies/perl-json-path/perl-json-path.yaml deleted file mode 100644 index 8d968c366..000000000 --- a/dependencies/perl-json-path/perl-json-path.yaml +++ /dev/null @@ -1,63 +0,0 @@ -name: "@NAME@" -arch: "${ARCH}" -platform: "linux" -version_schema: "none" -version: "@VERSION@" -release: "${RELEASE}${DIST}" -section: "default" -priority: "optional" -maintainer: "Centreon " -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} diff --git a/dependencies/perl-libssh-session/perl-libssh-session.yaml b/dependencies/perl-libssh-session/perl-libssh-session.yaml deleted file mode 100644 index 172009139..000000000 --- a/dependencies/perl-libssh-session/perl-libssh-session.yaml +++ /dev/null @@ -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 " -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} diff --git a/dependencies/perl-net-curl/perl-net-curl.yaml b/dependencies/perl-net-curl/perl-net-curl.yaml deleted file mode 100644 index 29964ff17..000000000 --- a/dependencies/perl-net-curl/perl-net-curl.yaml +++ /dev/null @@ -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 " -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} diff --git a/packaging/centreon-plugin-Network-Aruba-Aoscx-Snmp/pkg.json b/packaging/centreon-plugin-Network-Aruba-Aoscx-Snmp/pkg.json index 8b04f3365..42fb17dda 100644 --- a/packaging/centreon-plugin-Network-Aruba-Aoscx-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Aruba-Aoscx-Snmp/pkg.json @@ -5,9 +5,12 @@ "files": [ "centreon/plugins/script_snmp.pm", "centreon/plugins/snmp.pm", + "snmp_standard/mode/interfaces.pm", "snmp_standard/mode/listinterfaces.pm", + "snmp_standard/mode/listspanningtrees.pm", "snmp_standard/mode/resources/", - "snmp_standard/mode/interfaces.pm", + "snmp_standard/mode/spanningtree.pm", + "snmp_standard/mode/uptime.pm", "network/aruba/aoscx/snmp/" ] } diff --git a/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm b/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm index 740d24443..1641aa12d 100644 --- a/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm +++ b/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm @@ -43,7 +43,7 @@ sub prefix_scenario_output { sub prefix_steps_output { my ($self, %options) = @_; - return sprintf(" Step: %s, last exec: %s, ", $options{instance_value}->{display}, $options{instance_value}->{last_exec}); + return sprintf("Step: %s, last exec: %s, ", $options{instance_value}->{display}, $options{instance_value}->{last_exec}); } sub set_counters { @@ -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)); diff --git a/src/apps/protocols/http/mode/collection.pm b/src/apps/protocols/http/mode/collection.pm index df87efd84..52c849434 100644 --- a/src/apps/protocols/http/mode/collection.pm +++ b/src/apps/protocols/http/mode/collection.pm @@ -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 ($@) { diff --git a/src/apps/protocols/snmp/mode/collection.pm b/src/apps/protocols/snmp/mode/collection.pm index 0df162493..2cf625122 100644 --- a/src/apps/protocols/snmp/mode/collection.pm +++ b/src/apps/protocols/snmp/mode/collection.pm @@ -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 ($@) { diff --git a/src/apps/vmware/vsphere8/custom/api.pm b/src/apps/vmware/vsphere8/custom/api.pm index 0b9fb2d24..997e59546 100644 --- a/src/apps/vmware/vsphere8/custom/api.pm +++ b/src/apps/vmware/vsphere8/custom/api.pm @@ -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); @@ -44,12 +45,14 @@ sub new { if (!defined($options{noptions})) { $options{options}->add_options( arguments => { - 'hostname:s' => { name => 'hostname' }, - 'port:s' => { name => 'port' }, - 'proto:s' => { name => 'proto' }, - 'username:s' => { name => 'username' }, - 'password:s' => { name => 'password' }, - 'timeout:s' => { name => 'timeout' } + 'hostname:s' => { name => 'hostname' }, + 'port:s' => { name => 'port', default => '443' }, + 'proto:s' => { name => 'proto', default => 'https' }, + 'username:s' => { name => 'username' }, + 'password:s' => { name => 'password' }, + '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 } } ); } @@ -73,12 +76,14 @@ sub set_defaults {} 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->{username} = (defined($self->{option_results}->{username})) ? $self->{option_results}->{username} : ''; - $self->{password} = (defined($self->{option_results}->{password})) ? $self->{option_results}->{password} : ''; + $self->{hostname} = (defined($self->{option_results}->{hostname})) ? $self->{option_results}->{hostname} : ''; + $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."); @@ -146,15 +151,12 @@ sub get_token { $self->settings(); my $content = $self->{http}->request( - method => 'POST', - url_path => '/api/session', + 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' + 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( - url_path => '/api' . $options{endpoint}, - get_param => $options{get_param}, - header => [ 'vmware-api-session-id: ' . $token ], - unknown_status => '', - insecure => (defined($self->{option_results}->{insecure}) ? 1 : 0) + method => $method, + url_path => '/api' . $options{endpoint}, + get_param => $options{get_param}, + 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 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) and resource ID (rsrc_id). + +=over 4 + +=item * C<%options> - A hash of options. The following keys are supported: + +=over 8 + +=item * C - The counter ID for which to retrieve the acq_spec. This option is required. + +=item * C - 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 - The counter ID for which to create the acq_spec. This option is required. + +=item * C - 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 - The counter ID for which to extend the acq_spec. This option is required. + +=item * C - The resource ID for which to extend the acq_spec. This option is required. + +=item * C - 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 - The counter ID for which to check the acq\_spec. This option is required. + +=item * C - 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 - The resource ID for which to retrieve statistics. This option is required. + +=item * C - 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 must be recorded (default: 300). +Used to create entries at the C endpoint. + +=item B<--vstats-duration> + +Define the time (in seconds) after which the C will stop being recorded (default: 2764800, meaning 32 days). +Used to create entries at the C endpoint. + =item B<--timeout> Define the timeout for API requests (default: 10 seconds). @@ -397,4 +734,4 @@ Centreon Licensed under the Apache License, Version 2.0. -=cut \ No newline at end of file +=cut diff --git a/src/apps/vmware/vsphere8/esx/mode.pm b/src/apps/vmware/vsphere8/esx/mode.pm new file mode 100644 index 000000000..577f8abec --- /dev/null +++ b/src/apps/vmware/vsphere8/esx/mode.pm @@ -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). + +=item B<--esx-name> + +Define which physical server to monitor based on its name (example: C). +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 - The C (counter id) of the desired metric. + +=item * C - The ESX's C (resource ID) for which to retrieve the statistics. This option is optional if C is provided. + +=item * C - The ESX's name for which to retrieve the statistics. This option is not used if C is provided, which is the nominal usage of this function. + +=back + +=back + +Returns the statistics for the specified ESX. + +=cut + diff --git a/src/apps/vmware/vsphere8/esx/mode/cpu.pm b/src/apps/vmware/vsphere8/esx/mode/cpu.pm new file mode 100644 index 000000000..56c6264f4 --- /dev/null +++ b/src/apps/vmware/vsphere8/esx/mode/cpu.pm @@ -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: 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: 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: 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 diff --git a/src/apps/vmware/vsphere8/esx/mode/discovery.pm b/src/apps/vmware/vsphere8/esx/mode/discovery.pm index 52c3643b7..017320b1f 100644 --- a/src/apps/vmware/vsphere8/esx/mode/discovery.pm +++ b/src/apps/vmware/vsphere8/esx/mode/discovery.pm @@ -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 diff --git a/src/apps/vmware/vsphere8/esx/mode/hoststatus.pm b/src/apps/vmware/vsphere8/esx/mode/hoststatus.pm index 6d86c2e6e..9a2ba191d 100644 --- a/src/apps/vmware/vsphere8/esx/mode/hoststatus.pm +++ b/src/apps/vmware/vsphere8/esx/mode/hoststatus.pm @@ -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 { @@ -73,8 +49,8 @@ sub set_counters { $self->{maps_counters_type} = [ { - name => 'host', - type => 1, + name => 'host', + type => 1, cb_prefix_output => 'prefix_host_output', message_multiple => 'All ESX Hosts are ok' } @@ -84,20 +60,22 @@ sub set_counters { { label => 'power-status', type => 2, + critical_default => '%{power_state} !~ /^powered_on$/i', set => { - key_values => [ { name => 'display' }, { name => 'power_state' } ], - closure_custom_output => $self->can('custom_power_status_output'), - closure_custom_perfdata => sub { return 0; }, + 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 } }, { 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'), - closure_custom_perfdata => sub { return 0; }, + closure_custom_output => $self->can('custom_connection_status_output'), + closure_custom_perfdata => sub {return 0;}, closure_custom_threshold_check => \&catalog_status_threshold_ng } } @@ -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. diff --git a/src/apps/vmware/vsphere8/esx/mode/memory.pm b/src/apps/vmware/vsphere8/esx/mode/memory.pm new file mode 100644 index 000000000..cf840236f --- /dev/null +++ b/src/apps/vmware/vsphere8/esx/mode/memory.pm @@ -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. diff --git a/src/apps/vmware/vsphere8/esx/mode/power.pm b/src/apps/vmware/vsphere8/esx/mode/power.pm new file mode 100644 index 000000000..de41f8e5a --- /dev/null +++ b/src/apps/vmware/vsphere8/esx/mode/power.pm @@ -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 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 diff --git a/src/apps/vmware/vsphere8/esx/plugin.pm b/src/apps/vmware/vsphere8/esx/plugin.pm index e73ef136a..6740b224f 100644 --- a/src/apps/vmware/vsphere8/esx/plugin.pm +++ b/src/apps/vmware/vsphere8/esx/plugin.pm @@ -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} = { - 'discovery' => 'apps::vmware::vsphere8::esx::mode::discovery', - 'host-status' => 'apps::vmware::vsphere8::esx::mode::hoststatus' + 'cpu' => 'apps::vmware::vsphere8::esx::mode::cpu', + 'discovery' => 'apps::vmware::vsphere8::esx::mode::discovery', + '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'; diff --git a/src/centreon/common/fortinet/fortigate/snmp/mode/vpn.pm b/src/centreon/common/fortinet/fortigate/snmp/mode/vpn.pm index ab87fb8a6..a1c7386f2 100644 --- a/src/centreon/common/fortinet/fortigate/snmp/mode/vpn.pm +++ b/src/centreon/common/fortinet/fortigate/snmp/mode/vpn.pm @@ -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,8 +248,13 @@ 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; + } } 1; @@ -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> diff --git a/src/centreon/common/protocols/sql/mode/collection.pm b/src/centreon/common/protocols/sql/mode/collection.pm index ed40f7e0a..21672a517 100644 --- a/src/centreon/common/protocols/sql/mode/collection.pm +++ b/src/centreon/common/protocols/sql/mode/collection.pm @@ -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 ($@) { diff --git a/src/cloud/azure/network/vpngateway/mode/health.pm b/src/cloud/azure/network/vpngateway/mode/health.pm index afb55d67b..c7afb46ac 100644 --- a/src/cloud/azure/network/vpngateway/mode/health.pm +++ b/src/cloud/azure/network/vpngateway/mode/health.pm @@ -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 diff --git a/src/cloud/azure/network/vpngateway/mode/sitetraffic.pm b/src/cloud/azure/network/vpngateway/mode/sitetraffic.pm index 1cac9a61d..be5db3f76 100644 --- a/src/cloud/azure/network/vpngateway/mode/sitetraffic.pm +++ b/src/cloud/azure/network/vpngateway/mode/sitetraffic.pm @@ -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 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 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, C, C) (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 diff --git a/src/cloud/azure/network/vpngateway/mode/tunneltraffic.pm b/src/cloud/azure/network/vpngateway/mode/tunneltraffic.pm index aa1a35754..e3a767ce6 100644 --- a/src/cloud/azure/network/vpngateway/mode/tunneltraffic.pm +++ b/src/cloud/azure/network/vpngateway/mode/tunneltraffic.pm @@ -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> diff --git a/src/cloud/azure/network/vpngateway/mode/vpngatewaystatus.pm b/src/cloud/azure/network/vpngateway/mode/vpngatewaystatus.pm index 9dd358563..80d409a55 100644 --- a/src/cloud/azure/network/vpngateway/mode/vpngatewaystatus.pm +++ b/src/cloud/azure/network/vpngateway/mode/vpngatewaystatus.pm @@ -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 =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 diff --git a/src/hardware/pdu/raritan/snmp/mode/components/resources.pm b/src/hardware/pdu/raritan/snmp/mode/components/resources.pm index 12a06d54b..fa00826cb 100644 --- a/src/hardware/pdu/raritan/snmp/mode/components/resources.pm +++ b/src/hardware/pdu/raritan/snmp/mode/components/resources.pm @@ -197,6 +197,7 @@ $mapping = { $thresholds = { numeric => [ ['unavailable', 'UNKNOWN'], + ['absent', 'OK'], ['normal', 'OK'], ['belowLowerCritical', 'CRITICAL'], ['belowLowerWarning', 'WARNING'], diff --git a/src/hardware/pdu/raritan/snmp/mode/components/sensor.pm b/src/hardware/pdu/raritan/snmp/mode/components/sensor.pm index bd36ae992..d6523ccfc 100644 --- a/src/hardware/pdu/raritan/snmp/mode/components/sensor.pm +++ b/src/hardware/pdu/raritan/snmp/mode/components/sensor.pm @@ -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}++; } - $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, diff --git a/src/hardware/server/cisco/ucs/snmp/mode/components/memory.pm b/src/hardware/server/cisco/ucs/snmp/mode/components/memory.pm index b3e905eca..f8bb7ba96 100644 --- a/src/hardware/server/cisco/ucs/snmp/mode/components/memory.pm +++ b/src/hardware/server/cisco/ucs/snmp/mode/components/memory.pm @@ -77,8 +77,10 @@ sub check { ); next; } - - $self->{components}->{memory}->{total}++; + + 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)) { diff --git a/src/hardware/server/cisco/ucs/snmp/mode/equipment.pm b/src/hardware/server/cisco/ucs/snmp/mode/equipment.pm index c356b82c9..57e170ede 100644 --- a/src/hardware/server/cisco/ucs/snmp/mode/equipment.pm +++ b/src/hardware/server/cisco/ucs/snmp/mode/equipment.pm @@ -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, C, C, C, C, C, C, C, C. =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 diff --git a/src/network/aruba/aoscx/snmp/plugin.pm b/src/network/aruba/aoscx/snmp/plugin.pm index 2e16b92f1..04a88c94e 100644 --- a/src/network/aruba/aoscx/snmp/plugin.pm +++ b/src/network/aruba/aoscx/snmp/plugin.pm @@ -30,14 +30,17 @@ sub new { bless $self, $class; $self->{modes} = { - 'cpu' => 'network::aruba::aoscx::snmp::mode::cpu', - 'hardware' => 'network::aruba::aoscx::snmp::mode::hardware', - 'interfaces' => 'snmp_standard::mode::interfaces', - 'list-interfaces' => 'snmp_standard::mode::listinterfaces', - 'memory' => 'network::aruba::aoscx::snmp::mode::memory', - 'stack' => 'network::aruba::aoscx::snmp::mode::stack', - 'vsf' => 'network::aruba::aoscx::snmp::mode::vsf', - 'vsx' => 'network::aruba::aoscx::snmp::mode::vsx' + 'cpu' => 'network::aruba::aoscx::snmp::mode::cpu', + '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' }; return $self; diff --git a/src/network/chapsvision/crossing/snmp/mode/antivirus.pm b/src/network/chapsvision/crossing/snmp/mode/antivirus.pm index e137914d4..6b622ace6 100644 --- a/src/network/chapsvision/crossing/snmp/mode/antivirus.pm +++ b/src/network/chapsvision/crossing/snmp/mode/antivirus.pm @@ -172,48 +172,68 @@ sub check_options { } my $mapping = { - 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' + 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' + } }, - 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' + + 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 ); diff --git a/src/os/as400/connector/custom/api.pm b/src/os/as400/connector/custom/api.pm index 8068b708f..252cb0b74 100644 --- a/src/os/as400/connector/custom/api.pm +++ b/src/os/as400/connector/custom/api.pm @@ -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 diff --git a/src/os/as400/connector/mode/disks.pm b/src/os/as400/connector/mode/disks.pm index e28e3fc25..194abf8d1 100644 --- a/src/os/as400/connector/mode/disks.pm +++ b/src/os/as400/connector/mode/disks.pm @@ -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); diff --git a/src/os/as400/connector/mode/jobs.pm b/src/os/as400/connector/mode/jobs.pm index caedac6b8..14c27479a 100644 --- a/src/os/as400/connector/mode/jobs.pm +++ b/src/os/as400/connector/mode/jobs.pm @@ -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}}) { diff --git a/src/os/as400/connector/mode/listdisks.pm b/src/os/as400/connector/mode/listdisks.pm index 2361c0782..830fc04fb 100644 --- a/src/os/as400/connector/mode/listdisks.pm +++ b/src/os/as400/connector/mode/listdisks.pm @@ -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 = { diff --git a/src/os/as400/connector/mode/listsubsystems.pm b/src/os/as400/connector/mode/listsubsystems.pm index e17683149..52e30df5a 100644 --- a/src/os/as400/connector/mode/listsubsystems.pm +++ b/src/os/as400/connector/mode/listsubsystems.pm @@ -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 = { diff --git a/src/os/as400/connector/mode/subsystems.pm b/src/os/as400/connector/mode/subsystems.pm index 86661d4ac..96e6bb8c2 100644 --- a/src/os/as400/connector/mode/subsystems.pm +++ b/src/os/as400/connector/mode/subsystems.pm @@ -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} = {}; diff --git a/src/storage/emc/datadomain/snmp/mode/cleaning.pm b/src/storage/emc/datadomain/snmp/mode/cleaning.pm index 762925ce4..507e124bc 100644 --- a/src/storage/emc/datadomain/snmp/mode/cleaning.pm +++ b/src/storage/emc/datadomain/snmp/mode/cleaning.pm @@ -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. +Format example : Europe/Paris and America/Los_Angeles + =item B<--warning-*> B<--critical-*> Thresholds. diff --git a/src/storage/netapp/ontap/restapi/mode/hardware.pm b/src/storage/netapp/ontap/restapi/mode/hardware.pm index 5471ec4c9..b68ee9d46 100644 --- a/src/storage/netapp/ontap/restapi/mode/hardware.pm +++ b/src/storage/netapp/ontap/restapi/mode/hardware.pm @@ -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 { diff --git a/src/storage/purestorage/flasharray/v2/restapi/mode/alerts.pm b/src/storage/purestorage/flasharray/v2/restapi/mode/alerts.pm index c3a423a5a..4692ab5d1 100644 --- a/src/storage/purestorage/flasharray/v2/restapi/mode/alerts.pm +++ b/src/storage/purestorage/flasharray/v2/restapi/mode/alerts.pm @@ -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> diff --git a/src/storage/purestorage/flasharray/v2/restapi/mode/arrays.pm b/src/storage/purestorage/flasharray/v2/restapi/mode/arrays.pm index e53952497..f1add4ffb 100644 --- a/src/storage/purestorage/flasharray/v2/restapi/mode/arrays.pm +++ b/src/storage/purestorage/flasharray/v2/restapi/mode/arrays.pm @@ -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-*> diff --git a/src/storage/purestorage/flasharray/v2/restapi/mode/volumes.pm b/src/storage/purestorage/flasharray/v2/restapi/mode/volumes.pm index 7c4be1f9b..0b4fc5a10 100644 --- a/src/storage/purestorage/flasharray/v2/restapi/mode/volumes.pm +++ b/src/storage/purestorage/flasharray/v2/restapi/mode/volumes.pm @@ -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-*> diff --git a/tests/apps/vmware/vsphere8/api.t b/tests/apps/vmware/vsphere8/api.t index ddc2168bd..6225333d9 100644 --- a/tests/apps/vmware/vsphere8/api.t +++ b/tests/apps/vmware/vsphere8/api.t @@ -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(); @@ -111,4 +111,4 @@ eval { $api->check_options() }; like($@, qr/Need to specify --password option/, 'Missing password handled correctly'); -done_testing(); \ No newline at end of file +done_testing(); diff --git a/tests/apps/vmware/vsphere8/esx/cpu-curl.robot b/tests/apps/vmware/vsphere8/esx/cpu-curl.robot new file mode 100644 index 000000000..9da11dce6 --- /dev/null +++ b/tests/apps/vmware/vsphere8/esx/cpu-curl.robot @@ -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 diff --git a/tests/apps/vmware/vsphere8/esx/cpu-lwp.robot b/tests/apps/vmware/vsphere8/esx/cpu-lwp.robot new file mode 100644 index 000000000..ef732a378 --- /dev/null +++ b/tests/apps/vmware/vsphere8/esx/cpu-lwp.robot @@ -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 diff --git a/tests/apps/vmware/vsphere8/esx/host-status.robot b/tests/apps/vmware/vsphere8/esx/host-status.robot index f0ac4a625..d1f3a2b6d 100644 --- a/tests/apps/vmware/vsphere8/esx/host-status.robot +++ b/tests/apps/vmware/vsphere8/esx/host-status.robot @@ -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 diff --git a/tests/apps/vmware/vsphere8/esx/memory.robot b/tests/apps/vmware/vsphere8/esx/memory.robot new file mode 100644 index 000000000..bdb704af9 --- /dev/null +++ b/tests/apps/vmware/vsphere8/esx/memory.robot @@ -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 diff --git a/tests/apps/vmware/vsphere8/esx/power.robot b/tests/apps/vmware/vsphere8/esx/power.robot new file mode 100644 index 000000000..8a0daaefb --- /dev/null +++ b/tests/apps/vmware/vsphere8/esx/power.robot @@ -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;; diff --git a/tests/apps/vmware/vsphere8/esx/vmware8-restapi.mockoon.json b/tests/apps/vmware/vsphere8/esx/vmware8-restapi.mockoon.json index 91b9a2f35..902452a76 100644 --- a/tests/apps/vmware/vsphere8/esx/vmware8-restapi.mockoon.json +++ b/tests/apps/vmware/vsphere8/esx/vmware8-restapi.mockoon.json @@ -1,6 +1,6 @@ { "uuid": "dd7d9589-c42b-42e9-8790-f11c8a0f344d", - "lastMigration": 32, + "lastMigration": 33, "name": "Vmware8 restapi.mockoon", "endpointPrefix": "", "latency": 0, @@ -60,7 +60,9 @@ "callbacks": [] } ], - "responseMode": null + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 }, { "uuid": "68acba14-1ccf-4597-a90c-69264b07d558", @@ -114,7 +116,568 @@ "body": "{}" } ], - "responseMode": null + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 + }, + { + "uuid": "a2915563-bcd6-463a-9641-11faeca700e5", + "type": "http", + "documentation": "When the counters we need do not exist", + "method": "get", + "endpoint": "api/stats/acq-specs", + "responses": [ + { + "uuid": "98ddac1f-87a7-44e8-af12-f5fc58221fde", + "body": "{\n \"acq_specs\": []\n}\n", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [ + { + "key": "access-control-allow-headers", + "value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With" + }, + { + "key": "access-control-allow-methods", + "value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS" + }, + { + "key": "access-control-allow-origin", + "value": "*" + }, + { + "key": "content-security-policy", + "value": "default-src 'none'" + }, + { + "key": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + } + ], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "request_number", + "modifier": "", + "value": "1", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "1ea5a0c5-9748-4e0a-b0e3-492897228e05", + "body": "{\n \"acq_specs\": [\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1742628629,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"225\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1742655151,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"226\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.demand.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045217,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"227\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740044377,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"228\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740044136,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"229\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740047017,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"230\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045217,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"231\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"net.throughput.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045225,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"232\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"net.throughput.usable.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740046184,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"233\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"net.throughput.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045225,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"234\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"disk.throughput.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045847,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"235\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"disk.throughput.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045727,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"236\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1742643265,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"237\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1742636545,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"238\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.demand.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740044789,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"239\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740044429,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"240\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740043589,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"241\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740046469,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"242\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740044909,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"243\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"power.capacity.usable.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740044681,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"244\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"power.capacity.usable.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045693,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"245\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"power.capacity.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045640,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"246\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"power.capacity.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045813,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"247\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"power.capacity.usagePct.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740044441,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"248\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"power.capacity.usagePct.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045214,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"249\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"net.throughput.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740044563,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"250\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"net.throughput.usable.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740046003,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"251\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"net.throughput.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045523,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"252\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"net.throughput.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045523,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"253\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.reservedCapacityPct.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045181,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"254\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045781,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"255\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.usable.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1742651830,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"256\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045541,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"257\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740044461,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"258\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.consumed.vms.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1742653510,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"259\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.consumed.userworlds.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045782,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"260\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"disk.throughput.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740043764,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"261\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"disk.throughput.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045564,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"262\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.reservedCapacityPct.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740044735,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"263\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045814,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"264\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.usable.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1742655250,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"265\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740044735,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"266\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740044735,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"267\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.consumed.vms.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1742650090,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"268\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.consumed.userworlds.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-35\"\n }\n ],\n \"expiration\": 1740045335,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"269\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"net.throughput.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-28\"\n }\n ],\n \"expiration\": 1740045345,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"270\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742310937,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"271\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742310937,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"272\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.demand.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1739278153,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"273\",\n \"status\": \"EXPIRED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742552082,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"274\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742552083,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"275\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742552083,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"276\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.corecount.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1739278154,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"277\",\n \"status\": \"EXPIRED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"cpu.capacity.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-11\"\n }\n ],\n \"expiration\": 1742310951,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"278\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.reservedCapacityPct.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742569573,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"279\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.provisioned.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742569573,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"280\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.usable.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742569573,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"281\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.usage.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742569574,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"282\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.capacity.contention.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742569574,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"283\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.consumed.vms.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742569574,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"284\",\n \"status\": \"ENABLED\"\n },\n {\n \"counters\": {\n \"cid_mid\": {\n \"mid\": \"\",\n \"cid\": \"mem.consumed.userworlds.HOST\"\n },\n \"set_id\": \"\"\n },\n \"resources\": [\n {\n \"predicate\": \"EQUAL\",\n \"scheme\": \"moid\",\n \"type\": \"HOST\",\n \"id_value\": \"host-22\"\n }\n ],\n \"expiration\": 1742569574,\n \"interval\": 60,\n \"memo_\": \"\",\n \"id\": \"285\",\n \"status\": \"ENABLED\"\n }\n ]\n}\n", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "request_number", + "modifier": "", + "value": "1", + "invert": true, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 + }, + { + "uuid": "3cf897d7-eadd-4eb2-b228-b4e64a7ccc92", + "type": "http", + "documentation": "", + "method": "post", + "endpoint": "api/stats/acq-specs/", + "responses": [ + { + "uuid": "acebc7ab-979a-4699-a173-98a03fafb16a", + "body": "\"101\"", + "latency": 0, + "statusCode": 201, + "label": "", + "headers": [ + { + "key": "access-control-allow-headers", + "value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With" + }, + { + "key": "access-control-allow-methods", + "value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS" + }, + { + "key": "access-control-allow-origin", + "value": "*" + }, + { + "key": "content-security-policy", + "value": "default-src 'none'" + }, + { + "key": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + } + ], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "body", + "modifier": "", + "value": "", + "invert": false, + "operator": "valid_json_schema" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 + }, + { + "uuid": "3ec99f28-5dbb-41f9-aa7b-202aeb0864ed", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/stats/data/dp", + "responses": [ + { + "uuid": "5ce2efc1-82f3-4320-b783-c1f799729a06", + "body": "{\n \"data_points\": []\n}\n", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [ + { + "key": "access-control-allow-headers", + "value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With" + }, + { + "key": "access-control-allow-methods", + "value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS" + }, + { + "key": "access-control-allow-origin", + "value": "*" + }, + { + "key": "content-security-policy", + "value": "default-src 'none'" + }, + { + "key": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + } + ], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "request_number", + "modifier": "", + "value": "1", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "1719fb3b-ead1-4e4b-b4b9-b4623766be4a", + "body": "{\"data_points\":[{\"val\":50280.0,\"mid\":\"-4283477827978228727\",\"rid\":\"102\",\"cid\":\"cpu.capacity.provisioned.HOST\",\"ts\":1739271090},{\"val\":50280.0,\"mid\":\"-4283477827978228727\",\"rid\":\"102\",\"cid\":\"cpu.capacity.provisioned.HOST\",\"ts\":1739271150},{\"val\":50280.0,\"mid\":\"-4283477827978228727\",\"rid\":\"102\",\"cid\":\"cpu.capacity.provisioned.HOST\",\"ts\":1739271210}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "cpu.capacity.provisioned.HOST", + "invert": false, + "operator": "equals" + }, + { + "target": "request_number", + "modifier": "", + "value": "1", + "invert": true, + "operator": "equals" + } + ], + "rulesOperator": "AND", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "f0969cdf-cf15-42e1-81bf-65c914720de0", + "body": " {\"data_points\":[{\"val\":3572.68,\"mid\":\"-5138147526746009769\",\"rid\":\"102\",\"cid\":\"cpu.capacity.usage.HOST\",\"ts\":1739271090},{\"val\":3732.93,\"mid\":\"-5138147526746009769\",\"rid\":\"102\",\"cid\":\"cpu.capacity.usage.HOST\",\"ts\":1739271150},{\"val\":4603.44,\"mid\":\"-5138147526746009769\",\"rid\":\"102\",\"cid\":\"cpu.capacity.usage.HOST\",\"ts\":1739271210}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "cpu.capacity.usage.HOST", + "invert": false, + "operator": "equals" + }, + { + "target": "request_number", + "modifier": "", + "value": "1", + "invert": true, + "operator": "equals" + } + ], + "rulesOperator": "AND", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "290f3e41-8635-4fb8-b222-7880dd66a7ad", + "body": "{\"data_points\":[{\"val\":3494.0,\"mid\":\"-9094858043316143888\",\"rid\":\"102\",\"cid\":\"cpu.capacity.demand.HOST\",\"ts\":1739271090},{\"val\":3258.0,\"mid\":\"-9094858043316143888\",\"rid\":\"102\",\"cid\":\"cpu.capacity.demand.HOST\",\"ts\":1739271150},{\"val\":4201.0,\"mid\":\"-9094858043316143888\",\"rid\":\"102\",\"cid\":\"cpu.capacity.demand.HOST\",\"ts\":1739271210}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "cpu.capacity.demand.HOST", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "a90a3a02-4047-459b-b81a-68f75c6d59d0", + "body": "{\"data_points\":[{\"val\":0.57,\"mid\":\"-1713180257827098203\",\"rid\":\"102\",\"cid\":\"cpu.capacity.contention.HOST\",\"ts\":1739271090},{\"val\":0.59,\"mid\":\"-1713180257827098203\",\"rid\":\"102\",\"cid\":\"cpu.capacity.contention.HOST\",\"ts\":1739271150},{\"val\":0.55,\"mid\":\"-1713180257827098203\",\"rid\":\"102\",\"cid\":\"cpu.capacity.contention.HOST\",\"ts\":1739271210}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "cpu.capacity.contention.HOST", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "04dca032-b006-4f43-82c2-bc26adb0700d", + "body": "{\"data_points\":[{\"val\":24.0,\"mid\":\"7871225830587267191\",\"rid\":\"102\",\"cid\":\"cpu.corecount.provisioned.HOST\",\"ts\":1739271090},{\"val\":24.0,\"mid\":\"7871225830587267191\",\"rid\":\"102\",\"cid\":\"cpu.corecount.provisioned.HOST\",\"ts\":1739271150},{\"val\":24.0,\"mid\":\"7871225830587267191\",\"rid\":\"102\",\"cid\":\"cpu.corecount.provisioned.HOST\",\"ts\":1739271210}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "cpu.corecount.provisioned.HOST", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "f3055966-5a09-4b3b-a2f2-7a513bd91468", + "body": "{\"data_points\":[{\"val\":83.0,\"mid\":\"-8703878081681686712\",\"rid\":\"102\",\"cid\":\"cpu.corecount.usage.HOST\",\"ts\":1739271090},{\"val\":83.0,\"mid\":\"-8703878081681686712\",\"rid\":\"102\",\"cid\":\"cpu.corecount.usage.HOST\",\"ts\":1739271150},{\"val\":83.0,\"mid\":\"-8703878081681686712\",\"rid\":\"102\",\"cid\":\"cpu.corecount.usage.HOST\",\"ts\":1739271210}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "cpu.corecount.usage.HOST", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "a596be26-c388-4922-b7d2-1a7089d22779", + "body": "{\"data_points\":[{\"val\":0.0,\"mid\":\"3949316748863634779\",\"rid\":\"102\",\"cid\":\"cpu.corecount.contention.HOST\",\"ts\":1739271090},{\"val\":0.0,\"mid\":\"3949316748863634779\",\"rid\":\"102\",\"cid\":\"cpu.corecount.contention.HOST\",\"ts\":1739271150},{\"val\":0.0,\"mid\":\"3949316748863634779\",\"rid\":\"102\",\"cid\":\"cpu.corecount.contention.HOST\",\"ts\":1739271210}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "cpu.corecount.contention.HOST", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "9704a11d-ee77-4df6-9341-24967a78afab", + "body": "{\"data_points\":[{\"val\":260061.38,\"mid\":\"7912217246818631397\",\"rid\":\"102\",\"cid\":\"mem.capacity.usable.HOST\",\"ts\":1740039750},{\"val\":260061.35,\"mid\":\"7912217246818631397\",\"rid\":\"102\",\"cid\":\"mem.capacity.usable.HOST\",\"ts\":1740039810}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "mem.capacity.usable.HOST", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "43d6f10c-880e-4023-8dd1-494c563b859b", + "body": "{\"data_points\":[{\"val\":102424.82,\"mid\":\"-6907936868309351765\",\"rid\":\"102\",\"cid\":\"mem.consumed.vms.HOST\",\"ts\":1740039750},{\"val\":102424.82,\"mid\":\"-6907936868309351765\",\"rid\":\"102\",\"cid\":\"mem.consumed.vms.HOST\",\"ts\":1740039810}]}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "mem.consumed.vms.HOST", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "456efe0f-1b8b-4212-8933-6e4ef67df9ae", + "body": "{\"data_points\":[{\"val\":206.0,\"mid\":\"8446910325652763598\",\"rid\":\"102\",\"cid\":\"power.capacity.usage.HOST\",\"ts\":1740152385},{\"val\":200.0,\"mid\":\"8446910325652763598\",\"rid\":\"102\",\"cid\":\"power.capacity.usage.HOST\",\"ts\":1740152445},{\"val\":200.0,\"mid\":\"8446910325652763598\",\"rid\":\"102\",\"cid\":\"power.capacity.usage.HOST\",\"ts\":1740152505}]}\n", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "cid", + "value": "power.capacity.usage.HOST", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 + }, + { + "uuid": "1fd13443-f167-42e4-b5bd-8772fee3dc2e", + "type": "http", + "documentation": "", + "method": "patch", + "endpoint": "api/stats/acq-specs/:id", + "responses": [ + { + "uuid": "300ef726-80e0-4769-85cd-a8a89a082abe", + "latency": 0, + "statusCode": 204, + "label": "", + "headers": [ + { + "key": "access-control-allow-headers", + "value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With" + }, + { + "key": "access-control-allow-methods", + "value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS" + }, + { + "key": "access-control-allow-origin", + "value": "*" + }, + { + "key": "content-security-policy", + "value": "default-src 'none'" + }, + { + "key": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + } + ], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [], + "body": "{}" + } + ], + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 } ], "rootChildren": [ @@ -125,6 +688,22 @@ { "type": "route", "uuid": "68acba14-1ccf-4597-a90c-69264b07d558" + }, + { + "type": "route", + "uuid": "a2915563-bcd6-463a-9641-11faeca700e5" + }, + { + "type": "route", + "uuid": "3cf897d7-eadd-4eb2-b228-b4e64a7ccc92" + }, + { + "type": "route", + "uuid": "3ec99f28-5dbb-41f9-aa7b-202aeb0864ed" + }, + { + "type": "route", + "uuid": "1fd13443-f167-42e4-b5bd-8772fee3dc2e" } ], "proxyMode": false, diff --git a/tests/cloud/azure/network/vpngateway/vpngatewaystatus.json b/tests/cloud/azure/network/vpngateway/vpngatewaystatus.json new file mode 100644 index 000000000..4673a602c --- /dev/null +++ b/tests/cloud/azure/network/vpngateway/vpngatewaystatus.json @@ -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": [] +} \ No newline at end of file diff --git a/tests/cloud/azure/network/vpngateway/vpngatewaystatus.robot b/tests/cloud/azure/network/vpngateway/vpngatewaystatus.robot new file mode 100644 index 000000000..9e9ae7494 --- /dev/null +++ b/tests/cloud/azure/network/vpngateway/vpngatewaystatus.robot @@ -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] + + \ No newline at end of file diff --git a/tests/cpan-libraries/crypt-argon2.pl b/tests/cpan-libraries/crypt-argon2.pl new file mode 100755 index 000000000..d1cc7d061 --- /dev/null +++ b/tests/cpan-libraries/crypt-argon2.pl @@ -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); diff --git a/tests/cpan-libraries/json-path.pl b/tests/cpan-libraries/json-path.pl new file mode 100644 index 000000000..630b239b5 --- /dev/null +++ b/tests/cpan-libraries/json-path.pl @@ -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"; +} \ No newline at end of file diff --git a/tests/cpan-libraries/libssh-session.pl b/tests/cpan-libraries/libssh-session.pl new file mode 100644 index 000000000..997c99c00 --- /dev/null +++ b/tests/cpan-libraries/libssh-session.pl @@ -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"; \ No newline at end of file diff --git a/tests/cpan-libraries/net-curl.pl b/tests/cpan-libraries/net-curl.pl new file mode 100644 index 000000000..aa0a6c5ef --- /dev/null +++ b/tests/cpan-libraries/net-curl.pl @@ -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"; \ No newline at end of file diff --git a/tests/hardware/pdu/raritan/snmp/inletsensors.robot b/tests/hardware/pdu/raritan/snmp/inletsensors.robot new file mode 100644 index 000000000..dfd1344ea --- /dev/null +++ b/tests/hardware/pdu/raritan/snmp/inletsensors.robot @@ -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;;;; diff --git a/tests/hardware/pdu/raritan/snmp/outletsensors.robot b/tests/hardware/pdu/raritan/snmp/outletsensors.robot new file mode 100644 index 000000000..701195f5d --- /dev/null +++ b/tests/hardware/pdu/raritan/snmp/outletsensors.robot @@ -0,0 +1,33 @@ +*** Settings *** +Documentation Check outlet 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 *** +outlet ${tc} + [Tags] hardware pdu raritan outlet sensors + ${command} Catenate + ... ${CMD} + ... --mode=outlet-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 96 components are ok [12/12 activeEnergy, 12/12 activePower, 12/12 apparentPower, 12/12 frequency, 12/12 onOff, 12/12 powerFactor, 12/12 rmsCurrent, 12/12 rmsVoltage]. | 'Anonymized 102~1#hardware.sensor.outlet.activeenergy.watthour'=107881wattHour;;;; 'Anonymized 102~2#hardware.sensor.outlet.activeenergy.watthour'=330830wattHour;;;; 'Anonymized 102~3#hardware.sensor.outlet.activeenergy.watthour'=46648wattHour;;;; 'Anonymized 102~4#hardware.sensor.outlet.activeenergy.watthour'=4wattHour;;;; 'Anonymized 102~5#hardware.sensor.outlet.activeenergy.watthour'=281696wattHour;;;; 'Anonymized 102~6#hardware.sensor.outlet.activeenergy.watthour'=340154wattHour;;;; 'Anonymized 102~7#hardware.sensor.outlet.activeenergy.watthour'=293708wattHour;;;; 'Anonymized 102~8#hardware.sensor.outlet.activeenergy.watthour'=0wattHour;;;; 'Anonymized 102~9#hardware.sensor.outlet.activeenergy.watthour'=0wattHour;;;; 'Anonymized 102~10#hardware.sensor.outlet.activeenergy.watthour'=0wattHour;;;; 'Anonymized 102~11#hardware.sensor.outlet.activeenergy.watthour'=0wattHour;;;; 'Anonymized 102~12#hardware.sensor.outlet.activeenergy.watthour'=43137wattHour;;;; 'Anonymized 102~1#hardware.sensor.outlet.activepower.watt'=7W;;;; 'Anonymized 102~2#hardware.sensor.outlet.activepower.watt'=56W;;;; 'Anonymized 102~3#hardware.sensor.outlet.activepower.watt'=6W;;;; 'Anonymized 102~4#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~5#hardware.sensor.outlet.activepower.watt'=45W;;;; 'Anonymized 102~6#hardware.sensor.outlet.activepower.watt'=56W;;;; 'Anonymized 102~7#hardware.sensor.outlet.activepower.watt'=65W;;;; 'Anonymized 102~8#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~9#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~10#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~11#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~12#hardware.sensor.outlet.activepower.watt'=7W;;;; 'Anonymized 102~1#hardware.sensor.outlet.apparentpower.voltamp'=17voltamp;;;; 'Anonymized 102~2#hardware.sensor.outlet.apparentpower.voltamp'=71voltamp;;;; 'Anonymized 102~3#hardware.sensor.outlet.apparentpower.voltamp'=21voltamp;;;; 'Anonymized 102~4#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~5#hardware.sensor.outlet.apparentpower.voltamp'=78voltamp;;;; 'Anonymized 102~6#hardware.sensor.outlet.apparentpower.voltamp'=86voltamp;;;; 'Anonymized 102~7#hardware.sensor.outlet.apparentpower.voltamp'=91voltamp;;;; 'Anonymized 102~8#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~9#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~10#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~11#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~12#hardware.sensor.outlet.apparentpower.voltamp'=19voltamp;;;; 'Anonymized 102~1#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~2#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~3#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~4#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~5#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~6#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~7#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~8#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~9#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~10#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~11#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~12#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~1#hardware.sensor.outlet.powerfactor'=0.41;;;; 'Anonymized 102~2#hardware.sensor.outlet.powerfactor'=0.79;;;; 'Anonymized 102~3#hardware.sensor.outlet.powerfactor'=0.3;;;; 'Anonymized 102~5#hardware.sensor.outlet.powerfactor'=0.58;;;; 'Anonymized 102~6#hardware.sensor.outlet.powerfactor'=0.65;;;; 'Anonymized 102~7#hardware.sensor.outlet.powerfactor'=0.72;;;; 'Anonymized 102~12#hardware.sensor.outlet.powerfactor'=0.38;;;; 'Anonymized 102~1#hardware.sensor.outlet.rmscurrent.ampere'=0.074A;~:6.5;~:8;; 'Anonymized 102~2#hardware.sensor.outlet.rmscurrent.ampere'=0.303A;~:6.5;~:8;; 'Anonymized 102~3#hardware.sensor.outlet.rmscurrent.ampere'=0.091A;~:6.5;~:8;; 'Anonymized 102~4#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~5#hardware.sensor.outlet.rmscurrent.ampere'=0.333A;~:6.5;~:8;; 'Anonymized 102~6#hardware.sensor.outlet.rmscurrent.ampere'=0.371A;~:6.5;~:8;; 'Anonymized 102~7#hardware.sensor.outlet.rmscurrent.ampere'=0.389A;~:6.5;~:8;; 'Anonymized 102~8#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~9#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~10#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~11#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~12#hardware.sensor.outlet.rmscurrent.ampere'=0.081A;~:6.5;~:8;; 'Anonymized 102~1#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~2#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~3#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~4#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~5#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~6#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~7#hardware.sensor.outlet.rmsvoltage.volt'=234V;;;; 'Anonymized 102~8#hardware.sensor.outlet.rmsvoltage.volt'=0V;;;; 'Anonymized 102~9#hardware.sensor.outlet.rmsvoltage.volt'=0V;;;; 'Anonymized 102~10#hardware.sensor.outlet.rmsvoltage.volt'=0V;;;; 'Anonymized 102~11#hardware.sensor.outlet.rmsvoltage.volt'=0V;;;; 'Anonymized 102~12#hardware.sensor.outlet.rmsvoltage.volt'=234V;;;; 'hardware.activeEnergy.count'=12;;;; 'hardware.activePower.count'=12;;;; 'hardware.apparentPower.count'=12;;;; 'hardware.frequency.count'=12;;;; 'hardware.onOff.count'=12;;;; 'hardware.powerFactor.count'=12;;;; 'hardware.rmsCurrent.count'=12;;;; 'hardware.rmsVoltage.count'=12;;;; + ... 2 --filter=powerFactor OK: All 84 components are ok [12/12 activeEnergy, 12/12 activePower, 12/12 apparentPower, 12/12 frequency, 12/12 onOff, 12/12 rmsCurrent, 12/12 rmsVoltage]. | 'Anonymized 102~1#hardware.sensor.outlet.activeenergy.watthour'=107881wattHour;;;; 'Anonymized 102~2#hardware.sensor.outlet.activeenergy.watthour'=330830wattHour;;;; 'Anonymized 102~3#hardware.sensor.outlet.activeenergy.watthour'=46648wattHour;;;; 'Anonymized 102~4#hardware.sensor.outlet.activeenergy.watthour'=4wattHour;;;; 'Anonymized 102~5#hardware.sensor.outlet.activeenergy.watthour'=281696wattHour;;;; 'Anonymized 102~6#hardware.sensor.outlet.activeenergy.watthour'=340154wattHour;;;; 'Anonymized 102~7#hardware.sensor.outlet.activeenergy.watthour'=293708wattHour;;;; 'Anonymized 102~8#hardware.sensor.outlet.activeenergy.watthour'=0wattHour;;;; 'Anonymized 102~9#hardware.sensor.outlet.activeenergy.watthour'=0wattHour;;;; 'Anonymized 102~10#hardware.sensor.outlet.activeenergy.watthour'=0wattHour;;;; 'Anonymized 102~11#hardware.sensor.outlet.activeenergy.watthour'=0wattHour;;;; 'Anonymized 102~12#hardware.sensor.outlet.activeenergy.watthour'=43137wattHour;;;; 'Anonymized 102~1#hardware.sensor.outlet.activepower.watt'=7W;;;; 'Anonymized 102~2#hardware.sensor.outlet.activepower.watt'=56W;;;; 'Anonymized 102~3#hardware.sensor.outlet.activepower.watt'=6W;;;; 'Anonymized 102~4#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~5#hardware.sensor.outlet.activepower.watt'=45W;;;; 'Anonymized 102~6#hardware.sensor.outlet.activepower.watt'=56W;;;; 'Anonymized 102~7#hardware.sensor.outlet.activepower.watt'=65W;;;; 'Anonymized 102~8#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~9#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~10#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~11#hardware.sensor.outlet.activepower.watt'=0W;;;; 'Anonymized 102~12#hardware.sensor.outlet.activepower.watt'=7W;;;; 'Anonymized 102~1#hardware.sensor.outlet.apparentpower.voltamp'=17voltamp;;;; 'Anonymized 102~2#hardware.sensor.outlet.apparentpower.voltamp'=71voltamp;;;; 'Anonymized 102~3#hardware.sensor.outlet.apparentpower.voltamp'=21voltamp;;;; 'Anonymized 102~4#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~5#hardware.sensor.outlet.apparentpower.voltamp'=78voltamp;;;; 'Anonymized 102~6#hardware.sensor.outlet.apparentpower.voltamp'=86voltamp;;;; 'Anonymized 102~7#hardware.sensor.outlet.apparentpower.voltamp'=91voltamp;;;; 'Anonymized 102~8#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~9#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~10#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~11#hardware.sensor.outlet.apparentpower.voltamp'=0voltamp;;;; 'Anonymized 102~12#hardware.sensor.outlet.apparentpower.voltamp'=19voltamp;;;; 'Anonymized 102~1#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~2#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~3#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~4#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~5#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~6#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~7#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~8#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~9#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~10#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~11#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~12#hardware.sensor.outlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~1#hardware.sensor.outlet.rmscurrent.ampere'=0.074A;~:6.5;~:8;; 'Anonymized 102~2#hardware.sensor.outlet.rmscurrent.ampere'=0.303A;~:6.5;~:8;; 'Anonymized 102~3#hardware.sensor.outlet.rmscurrent.ampere'=0.091A;~:6.5;~:8;; 'Anonymized 102~4#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~5#hardware.sensor.outlet.rmscurrent.ampere'=0.333A;~:6.5;~:8;; 'Anonymized 102~6#hardware.sensor.outlet.rmscurrent.ampere'=0.371A;~:6.5;~:8;; 'Anonymized 102~7#hardware.sensor.outlet.rmscurrent.ampere'=0.389A;~:6.5;~:8;; 'Anonymized 102~8#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~9#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~10#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~11#hardware.sensor.outlet.rmscurrent.ampere'=0A;~:6.5;~:8;; 'Anonymized 102~12#hardware.sensor.outlet.rmscurrent.ampere'=0.081A;~:6.5;~:8;; 'Anonymized 102~1#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~2#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~3#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~4#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~5#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~6#hardware.sensor.outlet.rmsvoltage.volt'=233V;;;; 'Anonymized 102~7#hardware.sensor.outlet.rmsvoltage.volt'=234V;;;; 'Anonymized 102~8#hardware.sensor.outlet.rmsvoltage.volt'=0V;;;; 'Anonymized 102~9#hardware.sensor.outlet.rmsvoltage.volt'=0V;;;; 'Anonymized 102~10#hardware.sensor.outlet.rmsvoltage.volt'=0V;;;; 'Anonymized 102~11#hardware.sensor.outlet.rmsvoltage.volt'=0V;;;; 'Anonymized 102~12#hardware.sensor.outlet.rmsvoltage.volt'=234V;;;; 'hardware.activeEnergy.count'=12;;;; 'hardware.activePower.count'=12;;;; 'hardware.apparentPower.count'=12;;;; 'hardware.frequency.count'=12;;;; 'hardware.onOff.count'=12;;;; 'hardware.rmsCurrent.count'=12;;;; 'hardware.rmsVoltage.count'=12;;;; + ... 3 --component=onOff OK: All 12 components are ok [12/12 onOff]. | 'hardware.onOff.count'=12;;;; + ... 4 --component=powerFactor --threshold-overload='powerFactor,CRITICAL,absent' CRITICAL: '4' powerFactor state is 'absent' - '8' powerFactor state is 'absent' - '9' powerFactor state is 'absent' - '10' powerFactor state is 'absent' - '11' powerFactor state is 'absent' | 'Anonymized 102~1#hardware.sensor.outlet.powerfactor'=0.41;;;; 'Anonymized 102~2#hardware.sensor.outlet.powerfactor'=0.79;;;; 'Anonymized 102~3#hardware.sensor.outlet.powerfactor'=0.3;;;; 'Anonymized 102~5#hardware.sensor.outlet.powerfactor'=0.58;;;; 'Anonymized 102~6#hardware.sensor.outlet.powerfactor'=0.65;;;; 'Anonymized 102~7#hardware.sensor.outlet.powerfactor'=0.72;;;; 'Anonymized 102~12#hardware.sensor.outlet.powerfactor'=0.38;;;; 'hardware.powerFactor.count'=12;;;; diff --git a/tests/hardware/pdu/raritan/snmp/raritan.snmpwalk b/tests/hardware/pdu/raritan/snmp/raritan.snmpwalk new file mode 100644 index 000000000..14d53595d --- /dev/null +++ b/tests/hardware/pdu/raritan/snmp/raritan.snmpwalk @@ -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 diff --git a/tests/hardware/server/cisco/ucs/snmp/equipement.robot b/tests/hardware/server/cisco/ucs/snmp/equipement.robot new file mode 100644 index 000000000..6a602916e --- /dev/null +++ b/tests/hardware/server/cisco/ucs/snmp/equipement.robot @@ -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' \ No newline at end of file diff --git a/tests/hardware/server/cisco/ucs/snmp/slim-ucs-equipment.snmpwalk b/tests/hardware/server/cisco/ucs/snmp/slim-ucs-equipment.snmpwalk new file mode 100644 index 000000000..4efb4478a --- /dev/null +++ b/tests/hardware/server/cisco/ucs/snmp/slim-ucs-equipment.snmpwalk @@ -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 \ No newline at end of file diff --git a/tests/monitoring/iplabel/ekara/restapi/monitoring-iplabel-ekara.json b/tests/monitoring/iplabel/ekara/restapi/monitoring-iplabel-ekara.json index d4cd686c6..ee3c257c9 100644 --- a/tests/monitoring/iplabel/ekara/restapi/monitoring-iplabel-ekara.json +++ b/tests/monitoring/iplabel/ekara/restapi/monitoring-iplabel-ekara.json @@ -113,7 +113,7 @@ "responses": [ { "uuid": "e68a70e7-5eef-4f78-808c-e3cdaa19606c", - "body": "[\n {\n \"scenarioId\": \"09fe2561-315b-470f-a7ac-9c30fbd2e0fb\",\n \"scenarioName\": \"AKILA - (Web) \",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T10:21:03Z\"\n },\n {\n \"scenarioId\": \"127a149b-0fa6-4859-820e-9c4db23b6454\",\n \"scenarioName\": \"AKILA - (Browser Page Load)\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T07:20:08Z\"\n },\n {\n \"scenarioId\": \"41d36b91-a4d3-4b00-a3ca-9e4fcf737d30\",\n \"scenarioName\": \"Centreon Demo Parcours - Custom views\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-29T23:48:39Z\"\n },\n {\n \"scenarioId\": \"425bff8b-51eb-4b68-8529-6258e7b7888c\",\n \"scenarioName\": \"Centreon Demo ping Paris\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-04T06:15:00Z\"\n },\n {\n \"scenarioId\": \"478a6915-1c00-4e85-9fe2-7d919e28ce88\",\n \"scenarioName\": \"Centreon Demo Navigation\",\n \"currentStatus\": 2,\n \"startTime\": \"2024-12-30T10:06:04Z\"\n },\n {\n \"scenarioId\": \"4fa9f25d-ae49-4848-823a-945e7f865f4b\",\n \"scenarioName\": \"Centreon Demo ping NA\",\n \"currentStatus\": 8,\n \"startTime\": \"2024-12-30T10:30:21Z\"\n },\n {\n \"scenarioId\": \"7622678e-ffec-49f5-8a67-7d1b4452bff6\",\n \"scenarioName\": \"wrong currentstatus, no perfdata\",\n \"currentStatus\": 14,\n \"startTime\": \"2024-12-30T02:00:45Z\"\n },\n {\n \"scenarioId\": \"8d0a798c-1b47-4142-869d-9bdabc9c126c\",\n \"scenarioName\": \"Centreon Demo Parcours - Login\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-29T23:51:35Z\"\n },\n {\n \"scenarioId\": \"eae701ac-4231-4fc5-94e3-08601ac591e9\",\n \"scenarioName\": \"Centreon Demo ping Singapore\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T10:15:11Z\"\n },\n {\n \"scenarioId\": \"fc6b739e-c18c-40ab-917c-61d20dff830c\",\n \"scenarioName\": \"AKILA - Business App\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T09:30:23Z\"\n },\n {\n \"scenarioId\": \"fe1ca10e-1cf6-45c8-a7e9-b9b85272c086\",\n \"scenarioName\": \"AKILA - (API) \",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T10:10:55Z\"\n }\n]", + "body": "[\n {\n \"scenarioId\": \"09fe2561-315b-470f-a7ac-9c30fbd2e0fb\",\n \"scenarioName\": \"AKILA - (Web)\",\n \"currentStatus\": 2,\n \"startTime\": \"2024-12-30T10:21:03Z\"\n },\n {\n \"scenarioId\": \"127a149b-0fa6-4859-820e-9c4db23b6454\",\n \"scenarioName\": \"AKILA - (Browser Page Load)\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T07:20:08Z\"\n },\n {\n \"scenarioId\": \"41d36b91-a4d3-4b00-a3ca-9e4fcf737d30\",\n \"scenarioName\": \"Centreon Demo Parcours - Custom views\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-29T23:48:39Z\"\n },\n {\n \"scenarioId\": \"425bff8b-51eb-4b68-8529-6258e7b7888c\",\n \"scenarioName\": \"Centreon Demo ping Paris\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-04T06:15:00Z\"\n },\n {\n \"scenarioId\": \"478a6915-1c00-4e85-9fe2-7d919e28ce88\",\n \"scenarioName\": \"Centreon Demo Navigation\",\n \"currentStatus\": 2,\n \"startTime\": \"2024-12-30T10:06:04Z\"\n },\n {\n \"scenarioId\": \"4fa9f25d-ae49-4848-823a-945e7f865f4b\",\n \"scenarioName\": \"Centreon Demo ping NA\",\n \"currentStatus\": 8,\n \"startTime\": \"2024-12-30T10:30:21Z\"\n },\n {\n \"scenarioId\": \"7622678e-ffec-49f5-8a67-7d1b4452bff6\",\n \"scenarioName\": \"wrong currentstatus, no perfdata\",\n \"currentStatus\": 14,\n \"startTime\": \"2024-12-30T02:00:45Z\"\n },\n {\n \"scenarioId\": \"8d0a798c-1b47-4142-869d-9bdabc9c126c\",\n \"scenarioName\": \"Centreon Demo Parcours - Login\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-29T23:51:35Z\"\n },\n {\n \"scenarioId\": \"eae701ac-4231-4fc5-94e3-08601ac591e9\",\n \"scenarioName\": \"Centreon Demo ping Singapore\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T10:15:11Z\"\n },\n {\n \"scenarioId\": \"fc6b739e-c18c-40ab-917c-61d20dff830c\",\n \"scenarioName\": \"AKILA - Business App\",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T09:30:23Z\"\n },\n {\n \"scenarioId\": \"fe1ca10e-1cf6-45c8-a7e9-b9b85272c086\",\n \"scenarioName\": \"AKILA - (API) \",\n \"currentStatus\": 1,\n \"startTime\": \"2024-12-30T10:10:55Z\"\n },\n {\n \"scenarioId\": \"121ca10e-1cf6-45c8-a7e9-b9b85272c086\",\n \"scenarioName\": \"unknown Status 0\",\n \"currentStatus\": 0,\n \"startTime\": \"2024-12-30T10:10:55Z\"\n },\n {\n \"scenarioId\": \"121ca10e-1cf6-45c8-a7e9-b9b85272c086\",\n \"scenarioName\": \"unknown Status 3\",\n \"currentStatus\": 3,\n \"startTime\": \"2024-12-30T10:10:55Z\"\n },\n {\n \"scenarioId\": \"121ca10e-1cf6-45c8-a7e9-b9b85272c086\",\n \"scenarioName\": \"unknown Status 4\",\n \"currentStatus\": 4,\n \"startTime\": \"2024-12-30T10:10:55Z\"\n },\n {\n \"scenarioId\": \"121ca10e-1cf6-45c8-a7e9-b9b85272c086\",\n \"scenarioName\": \"unknown Status 5\",\n \"currentStatus\": 5,\n \"startTime\": \"2024-12-30T10:10:55Z\"\n },\n {\n \"scenarioId\": \"121ca10e-1cf6-45c8-a7e9-b9b85272c086\",\n \"scenarioName\": \"unknown Status 6\",\n \"currentStatus\": 6,\n \"startTime\": \"2024-12-30T10:10:55Z\"\n },\n {\n \"scenarioId\": \"121ca10e-1cf6-45c8-a7e9-b9b85272c086\",\n \"scenarioName\": \"unknown Status 7\",\n \"currentStatus\": 7,\n \"startTime\": \"2024-12-30T10:10:55Z\"\n }\n]", "latency": 0, "statusCode": 200, "label": "", @@ -205,7 +205,7 @@ "responses": [ { "uuid": "debf59fb-35ca-4482-b957-5cdf3b7777da", - "body": "{\n \"kpis\": [\n {\n \"name\": \"Availability\",\n \"order\": 0,\n \"type\": \"User\",\n \"unit\": \"percent\",\n \"label\": \"availability\",\n \"value\": 100\n },\n {\n \"name\": \"Total time for all steps\",\n \"order\": 100,\n \"type\": \"User\",\n \"unit\": \"ms\",\n \"label\": \"time_total_allsteps\",\n \"value\": 5822\n }\n ],\n \"results\": [\n {\n \"planningTime\": \"2024-12-30T10:30:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 9215,\n \"count\": 2,\n \"value\": 4608\n },\n {\n \"planningTime\": \"2024-12-30T10:30:00Z\",\n \"stepId\": \"1\",\n \"metric\": \"time_step\",\n \"duration\": 109,\n \"count\": 1,\n \"value\": 109\n },\n {\n \"planningTime\": \"2024-12-30T10:30:00Z\",\n \"stepId\": \"2\",\n \"metric\": \"time_step\",\n \"duration\": 87,\n \"count\": 1,\n \"value\": 87\n }\n ],\n \"siteIds\": [\n {\n \"id\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"name\": \"Paris (Iliad)\"\n },\n {\n \"id\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"name\": \"Paris (SFR)\"\n }\n ],\n \"metrics\": [\n {\n \"mtr_id\": \"eco_index\",\n \"mtr_name\": \"Eco Efficiency\",\n \"mtr_order\": 300,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \" \",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"nb_dom_elements\",\n \"mtr_name\": \"Number of DOM Elements\",\n \"mtr_order\": -1,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \" \",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"rum_speedindex\",\n \"mtr_name\": \"RUM Speed Index\",\n \"mtr_order\": 40,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": 10,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"start_render\",\n \"mtr_name\": \"Start render time\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_appcache\",\n \"mtr_name\": \"Application cache\",\n \"mtr_order\": 220,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_connect\",\n \"mtr_name\": \"Connection time\",\n \"mtr_order\": 240,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_interaction\",\n \"mtr_name\": \"Time to interact\",\n \"mtr_order\": 20,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": 20,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_multi_step\",\n \"mtr_name\": \"Cumulative Time Step\",\n \"mtr_order\": 100,\n \"mtr_type\": \"Cumulative\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_namelookup\",\n \"mtr_name\": \"Lookup time\",\n \"mtr_order\": 230,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_pageload\",\n \"mtr_name\": \"Page load time\",\n \"mtr_order\": 280,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_received\",\n \"mtr_name\": \"Response time\",\n \"mtr_order\": 270,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_redirect\",\n \"mtr_name\": \"Redirection time\",\n \"mtr_order\": 210,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_request\",\n \"mtr_name\": \"First byte time\",\n \"mtr_order\": 260,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_security_connect\",\n \"mtr_name\": \"TLS time\",\n \"mtr_order\": 250,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_step\",\n \"mtr_name\": \"Time Step\",\n \"mtr_order\": 100,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_total_allsteps\",\n \"mtr_name\": \"Total time for all steps\",\n \"mtr_order\": 100,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": 30,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_wv_fcp\",\n \"mtr_name\": \"First Contentful Paint\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_wv_fid\",\n \"mtr_name\": \"First Input Delay\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_wv_inp\",\n \"mtr_name\": \"Interaction to Next Paint\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_wv_lcp\",\n \"mtr_name\": \"Largest Contentful Paint\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"wv_cls\",\n \"mtr_name\": \"Cumulative Layout Shift\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \" \",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n }\n ],\n \"retries\": [],\n \"replays\": [],\n \"updates\": [],\n \"runningReplayId\": null,\n \"steps\": [\n {\n \"name\": \"Home\",\n \"index\": 1\n },\n {\n \"name\": \"Dashboard v2\",\n \"index\": 2\n },\n {\n \"name\": \"Dashboard v3\",\n \"index\": 3\n }\n ],\n \"infos\": {\n \"active_filter\": [\n {\n \"type\": \"measurementIds\",\n \"items\": [\n \"time_step\",\n \"time_multi_step\",\n \"time_total_allsteps\"\n ]\n }\n ],\n \"plugin_id\": \"WEB\",\n \"plugin_name\": \"Web\",\n \"info\": {\n \"hasStep\": true,\n \"showKPI\": true,\n \"hasWaterfall\": true,\n \"hasEcoEfficiency\": true,\n \"showThirdPartyContent\": true\n },\n \"scenarioName\": \"AKILA - (Web) \",\n \"default_plugin\": false\n },\n \"timelineDetails\": [\n {\n \"status\": 1,\n \"startTime\": \"2024-12-30T10:23:11Z\",\n \"endTime\": \"2024-12-30T10:38:11Z\",\n \"execs\": [\n {\n \"period\": \"PT10M\",\n \"siteId\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"status\": 1,\n \"execTime\": \"2024-12-30T10:21:03Z\",\n \"siteName\": \"Paris (Iliad)\",\n \"executionId\": \"51cd37fd-2210-4e92-9690-f6bfd833e560.32\",\n \"planningTime\": \"2024-12-30T10:20:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n }\n ],\n \"aggregate\": \"rowdata\",\n \"emptyResults\": [],\n \"retentionDateExceeded\": false\n}", + "body": "{\n \"kpis\": [\n {\n \"name\": \"Availability\",\n \"order\": 0,\n \"type\": \"User\",\n \"unit\": \"percent\",\n \"label\": \"availability\",\n \"value\": 45.76\n },\n {\n \"name\": \"Total time for all steps\",\n \"order\": 100,\n \"type\": \"User\",\n \"unit\": \"ms\",\n \"label\": \"time_total_allsteps\",\n \"value\": 4733\n }\n ],\n \"results\": [\n {\n \"planningTime\": \"2025-02-24T10:30:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 10288,\n \"count\": 2,\n \"value\": 5144\n },\n {\n \"planningTime\": \"2025-02-24T10:40:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 7320,\n \"count\": 2,\n \"value\": 3660\n },\n {\n \"planningTime\": \"2025-02-24T10:40:00Z\",\n \"stepId\": \"1\",\n \"metric\": \"time_step\",\n \"duration\": 126,\n \"count\": 1,\n \"value\": 126\n },\n {\n \"planningTime\": \"2025-02-24T10:40:00Z\",\n \"stepId\": \"2\",\n \"metric\": \"time_step\",\n \"duration\": 78,\n \"count\": 1,\n \"value\": 78\n },\n {\n \"planningTime\": \"2025-02-24T10:50:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 6347,\n \"count\": 2,\n \"value\": 3174\n },\n {\n \"planningTime\": \"2025-02-24T10:50:00Z\",\n \"stepId\": \"1\",\n \"metric\": \"time_step\",\n \"duration\": 152,\n \"count\": 1,\n \"value\": 152\n },\n {\n \"planningTime\": \"2025-02-24T10:50:00Z\",\n \"stepId\": \"2\",\n \"metric\": \"time_step\",\n \"duration\": 109,\n \"count\": 1,\n \"value\": 109\n },\n {\n \"planningTime\": \"2025-02-24T11:00:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 9041,\n \"count\": 2,\n \"value\": 4521\n },\n {\n \"planningTime\": \"2025-02-24T11:00:00Z\",\n \"stepId\": \"1\",\n \"metric\": \"time_step\",\n \"duration\": 4623,\n \"count\": 1,\n \"value\": 4623\n },\n {\n \"planningTime\": \"2025-02-24T11:00:00Z\",\n \"stepId\": \"2\",\n \"metric\": \"time_step\",\n \"duration\": 78,\n \"count\": 1,\n \"value\": 78\n },\n {\n \"planningTime\": \"2025-02-24T11:15:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 5565,\n \"count\": 2,\n \"value\": 2783\n },\n {\n \"planningTime\": \"2025-02-24T11:15:00Z\",\n \"stepId\": \"1\",\n \"metric\": \"time_step\",\n \"duration\": 1531,\n \"count\": 1,\n \"value\": 1531\n },\n {\n \"planningTime\": \"2025-02-24T11:15:00Z\",\n \"stepId\": \"2\",\n \"metric\": \"time_step\",\n \"duration\": 124,\n \"count\": 1,\n \"value\": 124\n },\n {\n \"planningTime\": \"2025-02-24T11:30:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 7322,\n \"count\": 2,\n \"value\": 3661\n },\n {\n \"planningTime\": \"2025-02-24T11:30:00Z\",\n \"stepId\": \"1\",\n \"metric\": \"time_step\",\n \"duration\": 127,\n \"count\": 1,\n \"value\": 127\n },\n {\n \"planningTime\": \"2025-02-24T11:30:00Z\",\n \"stepId\": \"2\",\n \"metric\": \"time_step\",\n \"duration\": 1975,\n \"count\": 1,\n \"value\": 1975\n },\n {\n \"planningTime\": \"2025-02-24T11:45:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 5449,\n \"count\": 2,\n \"value\": 2725\n },\n {\n \"planningTime\": \"2025-02-24T11:45:00Z\",\n \"stepId\": \"1\",\n \"metric\": \"time_step\",\n \"duration\": 76,\n \"count\": 1,\n \"value\": 76\n },\n {\n \"planningTime\": \"2025-02-24T11:45:00Z\",\n \"stepId\": \"2\",\n \"metric\": \"time_step\",\n \"duration\": 25,\n \"count\": 1,\n \"value\": 25\n },\n {\n \"planningTime\": \"2025-02-24T12:00:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 5702,\n \"count\": 2,\n \"value\": 2851\n }\n ],\n \"siteIds\": [\n {\n \"id\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"name\": \"Paris (Iliad)\"\n },\n {\n \"id\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"name\": \"Paris (SFR)\"\n }\n ],\n \"metrics\": [\n {\n \"mtr_id\": \"eco_index\",\n \"mtr_name\": \"Eco Efficiency\",\n \"mtr_order\": 300,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \" \",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"nb_dom_elements\",\n \"mtr_name\": \"Number of DOM Elements\",\n \"mtr_order\": -1,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \" \",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"rum_speedindex\",\n \"mtr_name\": \"RUM Speed Index\",\n \"mtr_order\": 40,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": 10,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"start_render\",\n \"mtr_name\": \"Start render time\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_appcache\",\n \"mtr_name\": \"Application cache\",\n \"mtr_order\": 220,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_connect\",\n \"mtr_name\": \"Connection time\",\n \"mtr_order\": 240,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_interaction\",\n \"mtr_name\": \"Time to interact\",\n \"mtr_order\": 20,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": 20,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_multi_step\",\n \"mtr_name\": \"Cumulative Time Step\",\n \"mtr_order\": 100,\n \"mtr_type\": \"Cumulative\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_namelookup\",\n \"mtr_name\": \"Lookup time\",\n \"mtr_order\": 230,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_pageload\",\n \"mtr_name\": \"Page load time\",\n \"mtr_order\": 280,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_received\",\n \"mtr_name\": \"Response time\",\n \"mtr_order\": 270,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_redirect\",\n \"mtr_name\": \"Redirection time\",\n \"mtr_order\": 210,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_request\",\n \"mtr_name\": \"First byte time\",\n \"mtr_order\": 260,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_security_connect\",\n \"mtr_name\": \"TLS time\",\n \"mtr_order\": 250,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_step\",\n \"mtr_name\": \"Time Step\",\n \"mtr_order\": 100,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_total_allsteps\",\n \"mtr_name\": \"Total time for all steps\",\n \"mtr_order\": 100,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": 30,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_wv_fcp\",\n \"mtr_name\": \"First Contentful Paint\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_wv_fid\",\n \"mtr_name\": \"First Input Delay\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_wv_inp\",\n \"mtr_name\": \"Interaction to Next Paint\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_wv_lcp\",\n \"mtr_name\": \"Largest Contentful Paint\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \"ms\",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"wv_cls\",\n \"mtr_name\": \"Cumulative Layout Shift\",\n \"mtr_order\": -1,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"WEB\",\n \"mtr_unit\": \" \",\n \"mtr_preferred_metric\": -1,\n \"filterEnabled\": false,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n }\n ],\n \"retries\": [],\n \"replays\": [],\n \"updates\": [],\n \"runningReplayId\": null,\n \"steps\": [\n {\n \"name\": \"Home\",\n \"index\": 1\n },\n {\n \"name\": \"Dashboard v2\",\n \"index\": 2\n },\n {\n \"name\": \"Dashboard v3\",\n \"index\": 3\n }\n ],\n \"infos\": {\n \"active_filter\": [\n {\n \"type\": \"measurementIds\",\n \"items\": [\n \"time_step\",\n \"time_multi_step\",\n \"time_total_allsteps\"\n ]\n }\n ],\n \"plugin_id\": \"WEB\",\n \"plugin_name\": \"Web\",\n \"info\": {\n \"hasStep\": true,\n \"showKPI\": true,\n \"hasWaterfall\": true,\n \"hasEcoEfficiency\": true,\n \"showThirdPartyContent\": true\n },\n \"scenarioName\": \"AKILA - (Web)\",\n \"default_plugin\": false\n },\n \"timelineDetails\": [\n {\n \"status\": 2,\n \"startTime\": \"2025-02-24T10:24:54Z\",\n \"endTime\": \"2025-02-24T10:51:48Z\",\n \"execs\": [\n {\n \"period\": \"PT10M\",\n \"siteId\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"status\": 2,\n \"execTime\": \"2025-02-24T10:23:46Z\",\n \"siteName\": \"Paris (SFR)\",\n \"executionId\": \"75ecc8db-889f-4b83-84f2-f6cc2aec96b1.32\",\n \"planningTime\": \"2025-02-24T10:20:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n },\n {\n \"status\": 1,\n \"startTime\": \"2025-02-24T10:51:48Z\",\n \"endTime\": \"2025-02-24T10:51:53Z\",\n \"execs\": [\n {\n \"period\": \"PT10M\",\n \"siteId\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"status\": 1,\n \"execTime\": \"2025-02-24T10:51:48Z\",\n \"siteName\": \"Paris (SFR)\",\n \"executionId\": \"af7db903-9888-438a-bc7f-854699e93025.35\",\n \"planningTime\": \"2025-02-24T10:50:00Z\",\n \"thresholdExceeded\": \"PT4.017S\"\n }\n ]\n },\n {\n \"status\": 2,\n \"startTime\": \"2025-02-24T10:51:53Z\",\n \"endTime\": \"2025-02-24T11:00:07Z\",\n \"execs\": [\n {\n \"period\": \"PT10M\",\n \"siteId\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"status\": 2,\n \"execTime\": \"2025-02-24T10:51:53Z\",\n \"siteName\": \"Paris (Iliad)\",\n \"executionId\": \"c34f64af-d16d-413a-a1b8-909be6ea2067.35\",\n \"planningTime\": \"2025-02-24T10:50:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n },\n {\n \"status\": 1,\n \"startTime\": \"2025-02-24T11:00:07Z\",\n \"endTime\": \"2025-02-24T11:04:23Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"status\": 1,\n \"execTime\": \"2025-02-24T11:00:07Z\",\n \"siteName\": \"Paris (Iliad)\",\n \"executionId\": \"df59373d-f667-4152-8aa2-d9c45166f49e.0\",\n \"planningTime\": \"2025-02-24T11:00:00Z\",\n \"thresholdExceeded\": \"PT10.323S\"\n }\n ]\n },\n {\n \"status\": 2,\n \"startTime\": \"2025-02-24T11:04:23Z\",\n \"endTime\": \"2025-02-24T11:16:09Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"status\": 2,\n \"execTime\": \"2025-02-24T11:04:23Z\",\n \"siteName\": \"Paris (SFR)\",\n \"executionId\": \"f12c4245-5a29-4439-ae8b-866c4d569917.0\",\n \"planningTime\": \"2025-02-24T11:00:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n },\n {\n \"status\": 1,\n \"startTime\": \"2025-02-24T11:16:09Z\",\n \"endTime\": \"2025-02-24T11:34:53Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"status\": 1,\n \"execTime\": \"2025-02-24T11:16:09Z\",\n \"siteName\": \"Paris (SFR)\",\n \"executionId\": \"79367bab-2548-4774-8f81-b960d9a8c6df.1\",\n \"planningTime\": \"2025-02-24T11:15:00Z\",\n \"thresholdExceeded\": \"PT4.58S\"\n }\n ]\n },\n {\n \"status\": 2,\n \"startTime\": \"2025-02-24T11:34:53Z\",\n \"endTime\": \"2025-02-24T11:37:24Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"status\": 2,\n \"execTime\": \"2025-02-24T11:34:53Z\",\n \"siteName\": \"Paris (SFR)\",\n \"executionId\": \"05bf238a-12d0-48b0-be61-5be12c98967f.2\",\n \"planningTime\": \"2025-02-24T11:30:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n },\n {\n \"status\": 1,\n \"startTime\": \"2025-02-24T11:37:24Z\",\n \"endTime\": \"2025-02-24T11:49:36Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"status\": 1,\n \"execTime\": \"2025-02-24T11:37:24Z\",\n \"siteName\": \"Paris (Iliad)\",\n \"executionId\": \"116cd0c5-e74c-4eb6-9322-a54552358081.2\",\n \"planningTime\": \"2025-02-24T11:30:00Z\",\n \"thresholdExceeded\": \"PT5.551S\"\n }\n ]\n },\n {\n \"status\": 2,\n \"startTime\": \"2025-02-24T11:49:36Z\",\n \"endTime\": \"2025-02-24T11:52:01Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"status\": 2,\n \"execTime\": \"2025-02-24T11:49:36Z\",\n \"siteName\": \"Paris (Iliad)\",\n \"executionId\": \"8774c789-7ade-4d9e-b4df-06c8d3231a84.3\",\n \"planningTime\": \"2025-02-24T11:45:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n },\n {\n \"status\": 1,\n \"startTime\": \"2025-02-24T11:52:01Z\",\n \"endTime\": \"2025-02-24T12:03:28Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"status\": 1,\n \"execTime\": \"2025-02-24T11:52:01Z\",\n \"siteName\": \"Paris (SFR)\",\n \"executionId\": \"a30965e7-22f5-483b-afd9-61c2d03ca235.3\",\n \"planningTime\": \"2025-02-24T11:45:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n },\n {\n \"status\": 2,\n \"startTime\": \"2025-02-24T12:03:28Z\",\n \"endTime\": \"2025-02-24T12:19:26Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"status\": 2,\n \"execTime\": \"2025-02-24T12:03:28Z\",\n \"siteName\": \"Paris (SFR)\",\n \"executionId\": \"5ba8e6c1-884d-4292-b3a7-6f821ea939d8.4\",\n \"planningTime\": \"2025-02-24T12:00:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n },\n {\n \"status\": 1,\n \"startTime\": \"2025-02-24T12:19:26Z\",\n \"endTime\": \"2025-02-24T12:29:54Z\",\n \"execs\": [\n {\n \"period\": \"PT15M\",\n \"siteId\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"status\": 1,\n \"execTime\": \"2025-02-24T12:19:26Z\",\n \"siteName\": \"Paris (Iliad)\",\n \"executionId\": \"2ee138ba-6670-400e-b285-ef43fe768c39.5\",\n \"planningTime\": \"2025-02-24T12:15:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n }\n ],\n \"aggregate\": \"rowdata\",\n \"emptyResults\": [],\n \"retentionDateExceeded\": false\n}", "latency": 0, "statusCode": 200, "label": "", @@ -891,6 +891,64 @@ "responseMode": null, "streamingMode": null, "streamingInterval": 0 + }, + { + "uuid": "3684b9e7-c4bf-4313-855f-b223a727eb21", + "type": "http", + "documentation": "", + "method": "post", + "endpoint": "results-api/results/121ca10e-1cf6-45c8-a7e9-b9b85272c086", + "responses": [ + { + "uuid": "a5ac5470-43e9-4665-ba3b-bd4b43bec14b", + "body": "{\n \"kpis\": [\n {\n \"name\": \"Availability\",\n \"order\": 0,\n \"type\": \"User\",\n \"unit\": \"percent\",\n \"label\": \"availability\",\n \"value\": 100\n },\n {\n \"name\": \"Time Total Allsteps\",\n \"order\": 10,\n \"type\": \"User\",\n \"unit\": \"ms\",\n \"label\": \"time_total_allsteps\",\n \"value\": 192\n }\n ],\n \"results\": [\n {\n \"planningTime\": \"2024-12-30T10:30:00Z\",\n \"stepId\": \"0\",\n \"metric\": \"time_step\",\n \"duration\": 307,\n \"count\": 2,\n \"value\": 154\n },\n {\n \"planningTime\": \"2024-12-30T10:30:00Z\",\n \"stepId\": \"1\",\n \"metric\": \"time_step\",\n \"duration\": 45,\n \"count\": 2,\n \"value\": 23\n },\n {\n \"planningTime\": \"2024-12-30T10:30:00Z\",\n \"stepId\": \"2\",\n \"metric\": \"time_step\",\n \"duration\": 31,\n \"count\": 2,\n \"value\": 16\n }\n ],\n \"siteIds\": [\n {\n \"id\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"name\": \"Paris (Iliad)\"\n },\n {\n \"id\": \"d1c377bf-745f-4d63-b25f-904b16582649\",\n \"name\": \"Paris (SFR)\"\n }\n ],\n \"metrics\": [\n {\n \"mtr_id\": \"dns\",\n \"mtr_name\": \"Dns\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"download\",\n \"mtr_name\": \"Download\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"firstByte\",\n \"mtr_name\": \"FirstByte\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"prepare\",\n \"mtr_name\": \"Prepare\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"process\",\n \"mtr_name\": \"Process\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"responseTime\",\n \"mtr_name\": \"ResponseTime\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"secureHandshake\",\n \"mtr_name\": \"SecureHandshake\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"tcp\",\n \"mtr_name\": \"Tcp\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_step\",\n \"mtr_name\": \"Time Step\",\n \"mtr_order\": 10,\n \"mtr_type\": \"Technical\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": true,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_total_allsteps\",\n \"mtr_name\": \"Time Total Allsteps\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": false,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": true\n },\n {\n \"mtr_id\": \"total\",\n \"mtr_name\": \"Total\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"wait\",\n \"mtr_name\": \"Wait\",\n \"mtr_order\": 10,\n \"mtr_type\": \"User\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": true,\n \"filterDisabledOnMultiStep\": true,\n \"filterDisabledOnAllStep\": false,\n \"filterDisabledOnPartialStep\": false\n },\n {\n \"mtr_id\": \"time_multi_step\",\n \"mtr_name\": \"Cumulative Time Step\",\n \"mtr_order\": 100,\n \"mtr_type\": \"Cumulative\",\n \"mtr_scn_type\": \"API\",\n \"mtr_unit\": \"ms\",\n \"filterEnabled\": false\n }\n ],\n \"retries\": [],\n \"replays\": [],\n \"updates\": [],\n \"runningReplayId\": null,\n \"steps\": [\n {\n \"name\": \"Dashboard v1\",\n \"index\": 1\n },\n {\n \"name\": \"Dashboard v2\",\n \"index\": 2\n },\n {\n \"name\": \"Dashboard v3\",\n \"index\": 3\n }\n ],\n \"infos\": {\n \"active_filter\": [\n {\n \"type\": \"measurementIds\",\n \"items\": [\n \"time_step\",\n \"time_total_allsteps\",\n \"time_multi_step\"\n ]\n }\n ],\n \"plugin_id\": \"API\",\n \"plugin_name\": \"Api\",\n \"info\": {\n \"hasStep\": true,\n \"showKPI\": false,\n \"hasWaterfall\": false\n },\n \"scenarioName\": \"AKILA - (API) \",\n \"default_plugin\": true\n },\n \"timelineDetails\": [\n {\n \"status\": 1,\n \"startTime\": \"2024-12-30T10:23:11Z\",\n \"endTime\": \"2024-12-30T10:38:11Z\",\n \"execs\": [\n {\n \"period\": \"PT10M\",\n \"siteId\": \"76300f93-1714-4235-aa20-105d0815b4e0\",\n \"status\": 1,\n \"execTime\": \"2024-12-30T10:10:55Z\",\n \"siteName\": \"Paris (Iliad)\",\n \"executionId\": \"B5KPKPSB34GYUQB532O0N076XYX.31\",\n \"planningTime\": \"2024-12-30T10:10:00Z\",\n \"thresholdExceeded\": null\n }\n ]\n }\n ],\n \"aggregate\": \"rowdata\",\n \"emptyResults\": [],\n \"retentionDateExceeded\": false\n}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "header", + "modifier": "authorization", + "value": "Bearer VeryLongTokenToAuthenticate", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "cd248f5d-0bf0-4a5b-9800-2f6f114d6b14", + "body": "{\"success\":false,\"code\":\"AUTH40001\",\"message\":\"No token provided.\"}", + "latency": 0, + "statusCode": 400, + "label": "if token not present don't send back data.", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 } ], "rootChildren": [ @@ -953,6 +1011,10 @@ { "type": "route", "uuid": "a184ab53-5369-4916-b204-5fd1e5146bbd" + }, + { + "type": "route", + "uuid": "3684b9e7-c4bf-4313-855f-b223a727eb21" } ], "proxyMode": false, diff --git a/tests/monitoring/iplabel/ekara/restapi/scenarios.robot b/tests/monitoring/iplabel/ekara/restapi/scenarios.robot index 2854a4947..e8ec53919 100644 --- a/tests/monitoring/iplabel/ekara/restapi/scenarios.robot +++ b/tests/monitoring/iplabel/ekara/restapi/scenarios.robot @@ -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) diff --git a/tests/network/aruba/aoscx/snmp/hardware.robot b/tests/network/aruba/aoscx/snmp/hardware.robot new file mode 100644 index 000000000..57d847816 --- /dev/null +++ b/tests/network/aruba/aoscx/snmp/hardware.robot @@ -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;;;; \ No newline at end of file diff --git a/tests/network/aruba/aoscx/snmp/interfaces.robot b/tests/network/aruba/aoscx/snmp/interfaces.robot new file mode 100644 index 000000000..aa9fcd3b4 --- /dev/null +++ b/tests/network/aruba/aoscx/snmp/interfaces.robot @@ -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) \ No newline at end of file diff --git a/tests/network/aruba/aoscx/snmp/list-interfaces.robot b/tests/network/aruba/aoscx/snmp/list-interfaces.robot new file mode 100644 index 000000000..4359da80b --- /dev/null +++ b/tests/network/aruba/aoscx/snmp/list-interfaces.robot @@ -0,0 +1,32 @@ +*** Settings *** +Documentation Check Aruba CX series in SNMP. + +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 *** +list-interfaces ${tc} + [Tags] network aruba list-interfaces + ${command} Catenate + ... ${CMD} + ... --mode=list-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 --add-extra-oid='alias,.1.3.6.1.2.1.31.1.1.1.18' List interfaces: '1/1/1' [speed = 100][status = up][id = 1][alias = ][type = ethernetCsmacd] '1/1/10' [speed = ][status = down][id = 10][alias = ][type = ethernetCsmacd] '1/1/11' [speed = ][status = down][id = 11][alias = ][type = ethernetCsmacd] '1/1/12' [speed = ][status = down][id = 12][alias = ][type = ethernetCsmacd] '1/1/13' [speed = ][status = down][id = 13][alias = ][type = ethernetCsmacd] '1/1/14' [speed = ][status = down][id = 14][alias = ][type = ethernetCsmacd] '1/1/15' [speed = 1000][status = up][id = 15][alias = ][type = ethernetCsmacd] '1/1/16' [speed = 1000][status = up][id = 16][alias = ][type = ethernetCsmacd] 'Anonymized 124' [speed = ][status = up][id = 16777217][alias = ][type = propVirtual] '1/1/2' [speed = ][status = down][id = 2][alias = ][type = ethernetCsmacd] '1/1/3' [speed = 1000][status = up][id = 3][alias = ][type = ethernetCsmacd] '1/1/4' [speed = ][status = down][id = 4][alias = ][type = ethernetCsmacd] '1/1/5' [speed = ][status = down][id = 5][alias = ][type = ethernetCsmacd] '1/1/6' [speed = ][status = down][id = 6][alias = ][type = ethernetCsmacd] '1/1/7' [speed = ][status = down][id = 7][alias = ][type = ethernetCsmacd] 'Anonymized 066' [speed = 2000][status = up][id = 769][alias = ][type = ieee8023adLag] '1/1/8' [speed = ][status = down][id = 8][alias = ][type = ethernetCsmacd] '1/1/9' [speed = ][status = down][id = 9][alias = ][type = ethernetCsmacd] + ... 2 --use-adminstatus='up' --speed=2000 --interface=1,1,10 List interfaces: '1/1/1' [speed = 2000][status = up][id = 1][type = ethernetCsmacd] '1/1/10' [speed = 2000][status = down][id = 10][type = ethernetCsmacd] + ... 3 --add-mac-address='' --interface=1,1,16 List interfaces: '1/1/1' [speed = 100][status = up][id = 1][macaddress = 41:6e:6f:6e:79:6d:69:7a:65:64:20:32:34:38][type = ethernetCsmacd] '1/1/16' [speed = 1000][status = up][id = 16][macaddress = 41:6e:6f:6e:79:6d:69:7a:65:64:20:30:36:38][type = ethernetCsmacd] + ... 4 --display-transform-src='eth' --display-transform-dst='ens' List interfaces: '1/1/1' [speed = 100][status = up][id = 1][type = ethernetCsmacd] '1/1/10' [speed = ][status = down][id = 10][type = ethernetCsmacd] '1/1/11' [speed = ][status = down][id = 11][type = ethernetCsmacd] '1/1/12' [speed = ][status = down][id = 12][type = ethernetCsmacd] '1/1/13' [speed = ][status = down][id = 13][type = ethernetCsmacd] '1/1/14' [speed = ][status = down][id = 14][type = ethernetCsmacd] '1/1/15' [speed = 1000][status = up][id = 15][type = ethernetCsmacd] '1/1/16' [speed = 1000][status = up][id = 16][type = ethernetCsmacd] 'Anonymized 124' [speed = ][status = up][id = 16777217][type = propVirtual] '1/1/2' [speed = ][status = down][id = 2][type = ethernetCsmacd] '1/1/3' [speed = 1000][status = up][id = 3][type = ethernetCsmacd] '1/1/4' [speed = ][status = down][id = 4][type = ethernetCsmacd] '1/1/5' [speed = ][status = down][id = 5][type = ethernetCsmacd] '1/1/6' [speed = ][status = down][id = 6][type = ethernetCsmacd] '1/1/7' [speed = ][status = down][id = 7][type = ethernetCsmacd] 'Anonymized 066' [speed = 2000][status = up][id = 769][type = ieee8023adLag] '1/1/8' [speed = ][status = down][id = 8][type = ethernetCsmacd] '1/1/9' [speed = ][status = down][id = 9][type = ethernetCsmacd] + ... 5 --filter-status='up|UP' List interfaces: '1/1/1' [speed = 100][status = up][id = 1][type = ethernetCsmacd] skipping interface '1/1/10': no matching filter status skipping interface '1/1/11': no matching filter status skipping interface '1/1/12': no matching filter status skipping interface '1/1/13': no matching filter status skipping interface '1/1/14': no matching filter status '1/1/15' [speed = 1000][status = up][id = 15][type = ethernetCsmacd] '1/1/16' [speed = 1000][status = up][id = 16][type = ethernetCsmacd] 'Anonymized 124' [speed = ][status = up][id = 16777217][type = propVirtual] skipping interface '1/1/2': no matching filter status '1/1/3' [speed = 1000][status = up][id = 3][type = ethernetCsmacd] skipping interface '1/1/4': no matching filter status skipping interface '1/1/5': no matching filter status skipping interface '1/1/6': no matching filter status skipping interface '1/1/7': no matching filter status 'Anonymized 066' [speed = 2000][status = up][id = 769][type = ieee8023adLag] skipping interface '1/1/8': no matching filter status skipping interface '1/1/9': no matching filter status \ No newline at end of file diff --git a/tests/network/aruba/aoscx/snmp/list-spanning-trees.robot b/tests/network/aruba/aoscx/snmp/list-spanning-trees.robot new file mode 100644 index 000000000..9ea39e96b --- /dev/null +++ b/tests/network/aruba/aoscx/snmp/list-spanning-trees.robot @@ -0,0 +1,29 @@ +*** Settings *** +Documentation List ports using Spanning Tree Protocol. + +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 *** +list-spanning-trees ${tc} + [Tags] network aruba + ${command} Catenate + ... ${CMD} + ... --mode=list-spanning-trees + ... --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} List ports with spanning tree protocol: [port = Anonymized 147] [state = forwarding] [op_status = up] [admin_status = up] [index = 1] [port = Anonymized 026] [state = blocking] [op_status = down] [admin_status = up] [index = 10] [port = Anonymized 232] [state = blocking] [op_status = down] [admin_status = up] [index = 11] [port = Anonymized 093] [state = blocking] [op_status = down] [admin_status = up] [index = 12] [port = Anonymized 058] [state = blocking] [op_status = down] [admin_status = up] [index = 13] [port = Anonymized 118] [state = blocking] [op_status = down] [admin_status = up] [index = 14] [port = Anonymized 029] [state = blocking] [op_status = down] [admin_status = up] [index = 2] [port = Anonymized 088] [state = forwarding] [op_status = up] [admin_status = up] [index = 3] [port = Anonymized 220] [state = blocking] [op_status = down] [admin_status = up] [index = 4] [port = Anonymized 003] [state = blocking] [op_status = down] [admin_status = up] [index = 5] [port = Anonymized 118] [state = blocking] [op_status = down] [admin_status = up] [index = 6] [port = Anonymized 192] [state = blocking] [op_status = down] [admin_status = up] [index = 7] [port = Anonymized 218] [state = forwarding] [op_status = up] [admin_status = up] [index = 769] [port = Anonymized 123] [state = blocking] [op_status = down] [admin_status = up] [index = 8] [port = Anonymized 203] [state = blocking] [op_status = down] [admin_status = up] [index = 9] + ... 2 --filter-port='Anonymized 147' List ports with spanning tree protocol: [port = Anonymized 147] [state = forwarding] [op_status = up] [admin_status = up] [index = 1] \ No newline at end of file diff --git a/tests/network/aruba/aoscx/snmp/slim_aoscx-spanning-tree.snmpwalk b/tests/network/aruba/aoscx/snmp/slim_aoscx-spanning-tree.snmpwalk new file mode 100644 index 000000000..9c642221b --- /dev/null +++ b/tests/network/aruba/aoscx/snmp/slim_aoscx-spanning-tree.snmpwalk @@ -0,0 +1,870 @@ +.1.3.6.1.2.1.1.1.0 = STRING: Anonymized 023 +.1.3.6.1.2.1.1.3.0 = Timeticks: (2361326509) 273 days, 7:14:25.09 +.1.3.6.1.2.1.2.2.1.2.1 = STRING: Anonymized 147 +.1.3.6.1.2.1.2.2.1.2.2 = STRING: Anonymized 029 +.1.3.6.1.2.1.2.2.1.2.3 = STRING: Anonymized 088 +.1.3.6.1.2.1.2.2.1.2.4 = STRING: Anonymized 220 +.1.3.6.1.2.1.2.2.1.2.5 = STRING: Anonymized 003 +.1.3.6.1.2.1.2.2.1.2.6 = STRING: Anonymized 118 +.1.3.6.1.2.1.2.2.1.2.7 = STRING: Anonymized 192 +.1.3.6.1.2.1.2.2.1.2.8 = STRING: Anonymized 123 +.1.3.6.1.2.1.2.2.1.2.9 = STRING: Anonymized 203 +.1.3.6.1.2.1.2.2.1.2.10 = STRING: Anonymized 026 +.1.3.6.1.2.1.2.2.1.2.11 = STRING: Anonymized 232 +.1.3.6.1.2.1.2.2.1.2.12 = STRING: Anonymized 093 +.1.3.6.1.2.1.2.2.1.2.13 = STRING: Anonymized 058 +.1.3.6.1.2.1.2.2.1.2.14 = STRING: Anonymized 118 +.1.3.6.1.2.1.2.2.1.2.15 = STRING: Anonymized 158 +.1.3.6.1.2.1.2.2.1.2.16 = STRING: Anonymized 191 +.1.3.6.1.2.1.2.2.1.2.769 = STRING: Anonymized 218 +.1.3.6.1.2.1.2.2.1.2.16777217 = STRING: Anonymized 126 +.1.3.6.1.2.1.2.2.1.3.1 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.2 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.3 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.4 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.5 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.6 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.7 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.8 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.9 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.10 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.11 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.12 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.13 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.14 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.15 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.16 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.769 = INTEGER: ieee8023adLag(161) +.1.3.6.1.2.1.2.2.1.3.16777217 = INTEGER: propVirtual(53) +.1.3.6.1.2.1.2.2.1.5.1 = Gauge32: 100000000 +.1.3.6.1.2.1.2.2.1.5.2 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.3 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.4 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.5 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.6 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.7 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.8 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.9 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.10 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.11 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.12 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.13 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.14 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.15 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.16 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.769 = Gauge32: 2000000000 +.1.3.6.1.2.1.2.2.1.5.16777217 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.6.1 = STRING: Anonymized 248 +.1.3.6.1.2.1.2.2.1.6.2 = STRING: Anonymized 210 +.1.3.6.1.2.1.2.2.1.6.3 = STRING: Anonymized 134 +.1.3.6.1.2.1.2.2.1.6.4 = STRING: Anonymized 003 +.1.3.6.1.2.1.2.2.1.6.5 = STRING: Anonymized 132 +.1.3.6.1.2.1.2.2.1.6.6 = STRING: Anonymized 026 +.1.3.6.1.2.1.2.2.1.6.7 = STRING: Anonymized 167 +.1.3.6.1.2.1.2.2.1.6.8 = STRING: Anonymized 198 +.1.3.6.1.2.1.2.2.1.6.9 = STRING: Anonymized 085 +.1.3.6.1.2.1.2.2.1.6.10 = STRING: Anonymized 084 +.1.3.6.1.2.1.2.2.1.6.11 = STRING: Anonymized 184 +.1.3.6.1.2.1.2.2.1.6.12 = STRING: Anonymized 072 +.1.3.6.1.2.1.2.2.1.6.13 = STRING: Anonymized 119 +.1.3.6.1.2.1.2.2.1.6.14 = STRING: Anonymized 010 +.1.3.6.1.2.1.2.2.1.6.15 = STRING: Anonymized 172 +.1.3.6.1.2.1.2.2.1.6.16 = STRING: Anonymized 068 +.1.3.6.1.2.1.2.2.1.6.769 = STRING: Anonymized 189 +.1.3.6.1.2.1.2.2.1.6.16777217 = STRING: Anonymized 253 +.1.3.6.1.2.1.2.2.1.7.1 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.2 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.3 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.4 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.5 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.6 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.7 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.8 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.9 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.10 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.11 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.12 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.13 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.14 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.15 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.16 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.769 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.16777217 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.1 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.2 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.3 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.4 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.5 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.6 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.7 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.8 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.9 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.10 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.11 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.12 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.13 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.14 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.15 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.16 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.769 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.16777217 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.10.1 = Counter32: 2799321992 +.1.3.6.1.2.1.2.2.1.10.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.3 = Counter32: 1702658653 +.1.3.6.1.2.1.2.2.1.10.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.15 = Counter32: 1937264653 +.1.3.6.1.2.1.2.2.1.10.16 = Counter32: 1103045742 +.1.3.6.1.2.1.2.2.1.10.769 = Counter32: 3040310395 +.1.3.6.1.2.1.2.2.1.10.16777217 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.1 = Counter32: 632906980 +.1.3.6.1.2.1.2.2.1.11.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.3 = Counter32: 85041039 +.1.3.6.1.2.1.2.2.1.11.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.15 = Counter32: 3737179627 +.1.3.6.1.2.1.2.2.1.11.16 = Counter32: 4010256568 +.1.3.6.1.2.1.2.2.1.11.769 = Counter32: 3452468899 +.1.3.6.1.2.1.2.2.1.11.16777217 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.769 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.16777217 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.769 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.16777217 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.1 = Counter32: 2535277909 +.1.3.6.1.2.1.2.2.1.16.2 = Counter32: 456922 +.1.3.6.1.2.1.2.2.1.16.3 = Counter32: 3837711975 +.1.3.6.1.2.1.2.2.1.16.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.15 = Counter32: 926060494 +.1.3.6.1.2.1.2.2.1.16.16 = Counter32: 488523450 +.1.3.6.1.2.1.2.2.1.16.769 = Counter32: 1414583944 +.1.3.6.1.2.1.2.2.1.16.16777217 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.1 = Counter32: 1701753024 +.1.3.6.1.2.1.2.2.1.17.2 = Counter32: 175 +.1.3.6.1.2.1.2.2.1.17.3 = Counter32: 3695853870 +.1.3.6.1.2.1.2.2.1.17.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.15 = Counter32: 2684357664 +.1.3.6.1.2.1.2.2.1.17.16 = Counter32: 4020237918 +.1.3.6.1.2.1.2.2.1.17.769 = Counter32: 2409628286 +.1.3.6.1.2.1.2.2.1.17.16777217 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.1 = Counter32: 1092059 +.1.3.6.1.2.1.2.2.1.19.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.3 = Counter32: 645 +.1.3.6.1.2.1.2.2.1.19.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.769 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.16777217 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.769 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.16777217 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.21.1 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.2 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.3 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.4 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.5 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.6 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.7 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.8 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.9 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.10 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.11 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.12 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.13 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.14 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.15 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.16 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.769 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.16777217 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.22.1 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.2 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.3 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.4 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.5 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.6 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.7 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.8 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.9 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.10 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.11 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.12 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.13 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.14 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.15 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.16 = OID: .1.3.6.1.2.1.10.7 +.1.3.6.1.2.1.2.2.1.22.769 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.16777217 = OID: .0.0 +.1.3.6.1.2.1.10.7.2.1.19.1 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.2 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.3 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.4 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.5 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.6 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.7 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.8 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.9 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.10 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.11 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.12 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.13 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.14 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.15 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.16 = INTEGER: fullDuplex(3) +.1.3.6.1.2.1.10.7.2.1.19.16777217 = INTEGER: unknown(1) +.1.3.6.1.2.1.17.1.4.1.2.1 = INTEGER: 1 +.1.3.6.1.2.1.17.1.4.1.2.2 = INTEGER: 2 +.1.3.6.1.2.1.17.1.4.1.2.3 = INTEGER: 3 +.1.3.6.1.2.1.17.1.4.1.2.4 = INTEGER: 4 +.1.3.6.1.2.1.17.1.4.1.2.5 = INTEGER: 5 +.1.3.6.1.2.1.17.1.4.1.2.6 = INTEGER: 6 +.1.3.6.1.2.1.17.1.4.1.2.7 = INTEGER: 7 +.1.3.6.1.2.1.17.1.4.1.2.8 = INTEGER: 8 +.1.3.6.1.2.1.17.1.4.1.2.9 = INTEGER: 9 +.1.3.6.1.2.1.17.1.4.1.2.10 = INTEGER: 10 +.1.3.6.1.2.1.17.1.4.1.2.11 = INTEGER: 11 +.1.3.6.1.2.1.17.1.4.1.2.12 = INTEGER: 12 +.1.3.6.1.2.1.17.1.4.1.2.13 = INTEGER: 13 +.1.3.6.1.2.1.17.1.4.1.2.14 = INTEGER: 14 +.1.3.6.1.2.1.17.1.4.1.2.769 = INTEGER: 769 +.1.3.6.1.2.1.17.2.15.1.1.1 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.1.2 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.1.3 = INTEGER: 3 +.1.3.6.1.2.1.17.2.15.1.1.4 = INTEGER: 4 +.1.3.6.1.2.1.17.2.15.1.1.5 = INTEGER: 5 +.1.3.6.1.2.1.17.2.15.1.1.6 = INTEGER: 6 +.1.3.6.1.2.1.17.2.15.1.1.7 = INTEGER: 7 +.1.3.6.1.2.1.17.2.15.1.1.8 = INTEGER: 8 +.1.3.6.1.2.1.17.2.15.1.1.9 = INTEGER: 9 +.1.3.6.1.2.1.17.2.15.1.1.10 = INTEGER: 10 +.1.3.6.1.2.1.17.2.15.1.1.11 = INTEGER: 11 +.1.3.6.1.2.1.17.2.15.1.1.12 = INTEGER: 12 +.1.3.6.1.2.1.17.2.15.1.1.13 = INTEGER: 13 +.1.3.6.1.2.1.17.2.15.1.1.14 = INTEGER: 14 +.1.3.6.1.2.1.17.2.15.1.1.769 = INTEGER: 769 +.1.3.6.1.2.1.17.2.15.1.2.1 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.2 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.3 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.4 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.5 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.6 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.7 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.8 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.9 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.10 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.11 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.12 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.13 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.14 = INTEGER: 128 +.1.3.6.1.2.1.17.2.15.1.2.769 = INTEGER: 64 +.1.3.6.1.2.1.17.2.15.1.3.1 = INTEGER: 5 +.1.3.6.1.2.1.17.2.15.1.3.2 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.3 = INTEGER: 5 +.1.3.6.1.2.1.17.2.15.1.3.4 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.5 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.6 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.7 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.8 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.9 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.10 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.11 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.12 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.13 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.14 = INTEGER: 2 +.1.3.6.1.2.1.17.2.15.1.3.769 = INTEGER: 5 +.1.3.6.1.2.1.17.2.15.1.4.1 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.2 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.3 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.4 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.5 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.6 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.7 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.8 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.9 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.10 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.11 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.12 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.13 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.14 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.4.769 = INTEGER: 1 +.1.3.6.1.2.1.17.2.15.1.5.1 = INTEGER: 200000 +.1.3.6.1.2.1.17.2.15.1.5.2 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.3 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.4 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.5 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.6 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.7 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.8 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.9 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.10 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.11 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.12 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.13 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.14 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.5.769 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.6.1 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.2 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.3 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.4 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.5 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.6 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.7 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.8 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.9 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.10 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.11 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.12 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.13 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.14 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.6.769 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.7.1 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.2 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.3 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.4 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.5 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.6 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.7 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.8 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.9 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.10 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.11 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.12 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.13 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.14 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.7.769 = INTEGER: 0 +.1.3.6.1.2.1.17.2.15.1.8.1 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.2 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.3 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.4 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.5 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.6 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.7 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.8 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.9 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.10 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.11 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.12 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.13 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.14 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.8.769 = Hex-STRING: 10 00 38 10 F0 80 B2 3F +.1.3.6.1.2.1.17.2.15.1.9.1 = Hex-STRING: 80 01 +.1.3.6.1.2.1.17.2.15.1.9.2 = Hex-STRING: 80 02 +.1.3.6.1.2.1.17.2.15.1.9.3 = Hex-STRING: 80 03 +.1.3.6.1.2.1.17.2.15.1.9.4 = Hex-STRING: 80 04 +.1.3.6.1.2.1.17.2.15.1.9.5 = Hex-STRING: 80 05 +.1.3.6.1.2.1.17.2.15.1.9.6 = Hex-STRING: 80 06 +.1.3.6.1.2.1.17.2.15.1.9.7 = Hex-STRING: 80 07 +.1.3.6.1.2.1.17.2.15.1.9.8 = Hex-STRING: 80 08 +.1.3.6.1.2.1.17.2.15.1.9.9 = Hex-STRING: 80 09 +.1.3.6.1.2.1.17.2.15.1.9.10 = Hex-STRING: 80 0A +.1.3.6.1.2.1.17.2.15.1.9.11 = Hex-STRING: 80 0B +.1.3.6.1.2.1.17.2.15.1.9.12 = Hex-STRING: 80 0C +.1.3.6.1.2.1.17.2.15.1.9.13 = Hex-STRING: 80 0D +.1.3.6.1.2.1.17.2.15.1.9.14 = Hex-STRING: 80 0E +.1.3.6.1.2.1.17.2.15.1.9.769 = Hex-STRING: 43 C2 +.1.3.6.1.2.1.17.2.15.1.10.1 = Counter32: 103 +.1.3.6.1.2.1.17.2.15.1.10.2 = Counter32: 4 +.1.3.6.1.2.1.17.2.15.1.10.3 = Counter32: 2 +.1.3.6.1.2.1.17.2.15.1.10.4 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.5 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.6 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.7 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.8 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.9 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.10 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.11 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.12 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.13 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.14 = Counter32: 0 +.1.3.6.1.2.1.17.2.15.1.10.769 = Counter32: 3 +.1.3.6.1.2.1.17.2.15.1.11.1 = INTEGER: 200000 +.1.3.6.1.2.1.17.2.15.1.11.2 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.3 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.4 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.5 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.6 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.7 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.8 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.9 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.10 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.11 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.12 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.13 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.14 = INTEGER: 20000 +.1.3.6.1.2.1.17.2.15.1.11.769 = INTEGER: 20000 +.1.3.6.1.2.1.25.1.1.0 = Timeticks: (2361331168) 273 days, 7:15:11.68 +.1.3.6.1.2.1.31.1.1.1.1.1 = STRING: 1/1/1 +.1.3.6.1.2.1.31.1.1.1.1.2 = STRING: 1/1/2 +.1.3.6.1.2.1.31.1.1.1.1.3 = STRING: 1/1/3 +.1.3.6.1.2.1.31.1.1.1.1.4 = STRING: 1/1/4 +.1.3.6.1.2.1.31.1.1.1.1.5 = STRING: 1/1/5 +.1.3.6.1.2.1.31.1.1.1.1.6 = STRING: 1/1/6 +.1.3.6.1.2.1.31.1.1.1.1.7 = STRING: 1/1/7 +.1.3.6.1.2.1.31.1.1.1.1.8 = STRING: 1/1/8 +.1.3.6.1.2.1.31.1.1.1.1.9 = STRING: 1/1/9 +.1.3.6.1.2.1.31.1.1.1.1.10 = STRING: 1/1/10 +.1.3.6.1.2.1.31.1.1.1.1.11 = STRING: 1/1/11 +.1.3.6.1.2.1.31.1.1.1.1.12 = STRING: 1/1/12 +.1.3.6.1.2.1.31.1.1.1.1.13 = STRING: 1/1/13 +.1.3.6.1.2.1.31.1.1.1.1.14 = STRING: 1/1/14 +.1.3.6.1.2.1.31.1.1.1.1.15 = STRING: 1/1/15 +.1.3.6.1.2.1.31.1.1.1.1.16 = STRING: 1/1/16 +.1.3.6.1.2.1.31.1.1.1.1.769 = STRING: Anonymized 066 +.1.3.6.1.2.1.31.1.1.1.1.16777217 = STRING: Anonymized 124 +.1.3.6.1.2.1.31.1.1.1.2.1 = Counter32: 4368743 +.1.3.6.1.2.1.31.1.1.1.2.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.15 = Counter32: 767577 +.1.3.6.1.2.1.31.1.1.1.2.16 = Counter32: 409817622 +.1.3.6.1.2.1.31.1.1.1.2.769 = Counter32: 410585199 +.1.3.6.1.2.1.31.1.1.1.2.16777217 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.1 = Counter32: 15318226 +.1.3.6.1.2.1.31.1.1.1.3.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.3 = Counter32: 3966116 +.1.3.6.1.2.1.31.1.1.1.3.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.15 = Counter32: 982 +.1.3.6.1.2.1.31.1.1.1.3.16 = Counter32: 1075209042 +.1.3.6.1.2.1.31.1.1.1.3.769 = Counter32: 1075210024 +.1.3.6.1.2.1.31.1.1.1.3.16777217 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.1 = Counter32: 368220955 +.1.3.6.1.2.1.31.1.1.1.4.2 = Counter32: 1976 +.1.3.6.1.2.1.31.1.1.1.4.3 = Counter32: 12592998 +.1.3.6.1.2.1.31.1.1.1.4.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.15 = Counter32: 2518473 +.1.3.6.1.2.1.31.1.1.1.4.16 = Counter32: 2627496 +.1.3.6.1.2.1.31.1.1.1.4.769 = Counter32: 5145969 +.1.3.6.1.2.1.31.1.1.1.4.16777217 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.1 = Counter32: 967075026 +.1.3.6.1.2.1.31.1.1.1.5.2 = Counter32: 1475 +.1.3.6.1.2.1.31.1.1.1.5.3 = Counter32: 2258044 +.1.3.6.1.2.1.31.1.1.1.5.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.15 = Counter32: 1710964 +.1.3.6.1.2.1.31.1.1.1.5.16 = Counter32: 18002742 +.1.3.6.1.2.1.31.1.1.1.5.769 = Counter32: 19713706 +.1.3.6.1.2.1.31.1.1.1.5.16777217 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.6.1 = Counter64: 376461555163 +.1.3.6.1.2.1.31.1.1.1.6.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 34146738763568 +.1.3.6.1.2.1.31.1.1.1.6.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.15 = Counter64: 20622085393542 +.1.3.6.1.2.1.31.1.1.1.6.16 = Counter64: 17357084434779 +.1.3.6.1.2.1.31.1.1.1.6.769 = Counter64: 37979169828321 +.1.3.6.1.2.1.31.1.1.1.6.16777217 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.1 = Counter64: 632907287 +.1.3.6.1.2.1.31.1.1.1.7.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.3 = Counter64: 43034773415 +.1.3.6.1.2.1.31.1.1.1.7.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.15 = Counter64: 29507029207 +.1.3.6.1.2.1.31.1.1.1.7.16 = Counter64: 29780096135 +.1.3.6.1.2.1.31.1.1.1.7.769 = Counter64: 54992158046 +.1.3.6.1.2.1.31.1.1.1.7.16777217 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.1 = Counter64: 4368743 +.1.3.6.1.2.1.31.1.1.1.8.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.15 = Counter64: 767577 +.1.3.6.1.2.1.31.1.1.1.8.16 = Counter64: 409817622 +.1.3.6.1.2.1.31.1.1.1.8.769 = Counter64: 410585199 +.1.3.6.1.2.1.31.1.1.1.8.16777217 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.1 = Counter64: 15318226 +.1.3.6.1.2.1.31.1.1.1.9.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.3 = Counter64: 3966116 +.1.3.6.1.2.1.31.1.1.1.9.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.15 = Counter64: 982 +.1.3.6.1.2.1.31.1.1.1.9.16 = Counter64: 1075209042 +.1.3.6.1.2.1.31.1.1.1.9.769 = Counter64: 1075210024 +.1.3.6.1.2.1.31.1.1.1.9.16777217 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.1 = Counter64: 7269620537561 +.1.3.6.1.2.1.31.1.1.1.10.2 = Counter64: 456922 +.1.3.6.1.2.1.31.1.1.1.10.3 = Counter64: 30274787091041 +.1.3.6.1.2.1.31.1.1.1.10.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.15 = Counter64: 4673853246548 +.1.3.6.1.2.1.31.1.1.1.10.16 = Counter64: 30013765895093 +.1.3.6.1.2.1.31.1.1.1.10.769 = Counter64: 34687619141641 +.1.3.6.1.2.1.31.1.1.1.10.16777217 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.1 = Counter64: 14586655683 +.1.3.6.1.2.1.31.1.1.1.11.2 = Counter64: 175 +.1.3.6.1.2.1.31.1.1.1.11.3 = Counter64: 42350605721 +.1.3.6.1.2.1.31.1.1.1.11.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.15 = Counter64: 11274306101 +.1.3.6.1.2.1.31.1.1.1.11.16 = Counter64: 34085073298 +.1.3.6.1.2.1.31.1.1.1.11.769 = Counter64: 41064412103 +.1.3.6.1.2.1.31.1.1.1.11.16777217 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.1 = Counter64: 368220955 +.1.3.6.1.2.1.31.1.1.1.12.2 = Counter64: 1976 +.1.3.6.1.2.1.31.1.1.1.12.3 = Counter64: 12592998 +.1.3.6.1.2.1.31.1.1.1.12.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.15 = Counter64: 2518473 +.1.3.6.1.2.1.31.1.1.1.12.16 = Counter64: 2627496 +.1.3.6.1.2.1.31.1.1.1.12.769 = Counter64: 5145969 +.1.3.6.1.2.1.31.1.1.1.12.16777217 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.1 = Counter64: 967075026 +.1.3.6.1.2.1.31.1.1.1.13.2 = Counter64: 1475 +.1.3.6.1.2.1.31.1.1.1.13.3 = Counter64: 2258044 +.1.3.6.1.2.1.31.1.1.1.13.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.15 = Counter64: 1710964 +.1.3.6.1.2.1.31.1.1.1.13.16 = Counter64: 18002742 +.1.3.6.1.2.1.31.1.1.1.13.769 = Counter64: 19713706 +.1.3.6.1.2.1.31.1.1.1.13.16777217 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.14.1 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.2 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.3 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.4 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.5 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.6 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.7 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.8 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.9 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.10 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.11 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.12 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.13 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.14 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.15 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.16 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.14.769 = INTEGER: 0 +.1.3.6.1.2.1.31.1.1.1.14.16777217 = INTEGER: disabled(2) +.1.3.6.1.2.1.31.1.1.1.15.1 = Gauge32: 100 +.1.3.6.1.2.1.31.1.1.1.15.2 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.3 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.4 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.5 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.6 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.7 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.8 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.9 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.10 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.11 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.12 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.13 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.14 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.15 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.16 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.769 = Gauge32: 2000 +.1.3.6.1.2.1.31.1.1.1.15.16777217 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.16.1 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.2 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.3 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.4 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.5 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.6 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.7 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.8 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.9 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.10 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.11 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.12 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.13 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.14 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.15 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.16 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.769 = INTEGER: 0 +.1.3.6.1.2.1.31.1.1.1.16.16777217 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.1 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.2 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.3 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.4 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.5 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.6 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.7 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.8 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.9 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.10 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.11 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.12 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.13 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.14 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.15 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.16 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.769 = INTEGER: 0 +.1.3.6.1.2.1.31.1.1.1.17.16777217 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.18.1 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.2 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.3 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.4 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.5 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.6 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.7 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.8 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.9 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.10 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.11 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.12 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.13 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.14 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.15 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.16 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.769 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.16777217 = STRING: +.1.3.6.1.2.1.31.1.1.1.19.1 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.2 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.3 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.4 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.5 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.6 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.7 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.8 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.9 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.10 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.11 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.12 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.13 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.14 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.15 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.16 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.769 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.16777217 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.2.1.1 = INTEGER: 1 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.3.1.1 = STRING: Anonymized 092 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.4.1.1 = STRING: "ok" +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.5.1.1 = STRING: Anonymized 183 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.6.1.1 = STRING: Anonymized 055 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.7.1.1 = INTEGER: 0 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.8.1.1 = INTEGER: 165 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.9.1.1 = INTEGER: 0 +.1.3.6.1.4.1.47196.4.1.1.3.11.2.1.1.10.1.1 = STRING: Anonymized 146 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.5.1.3.1.1 = STRING: "Anonymized 145" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.5.1.3.1.2 = STRING: "Anonymized 096" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.5.1.4.1.1 = STRING: "Anonymized 138" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.5.1.4.1.2 = STRING: "Anonymized 186" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.5.1.4.1.3 = STRING: "Anonymized 159" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.5.1.4.1.4 = STRING: "Anonymized 101" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.6.1.3.1.1 = STRING: "normal" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.6.1.3.1.2 = STRING: "normal" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.6.1.4.1.1 = STRING: "normal" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.6.1.4.1.2 = STRING: "normal" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.6.1.4.1.3 = STRING: "normal" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.6.1.4.1.4 = STRING: "normal" +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.7.1.3.1.1 = INTEGER: 60000 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.7.1.3.1.2 = INTEGER: 58000 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.7.1.4.1.1 = INTEGER: 20500 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.7.1.4.1.2 = INTEGER: 63500 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.7.1.4.1.3 = INTEGER: 63250 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.7.1.4.1.4 = INTEGER: 63750 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.8.1.3.1.1 = INTEGER: 39000 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.8.1.3.1.2 = INTEGER: 39000 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.8.1.4.1.1 = INTEGER: 8875 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.8.1.4.1.2 = INTEGER: 35000 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.8.1.4.1.3 = INTEGER: 34750 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.8.1.4.1.4 = INTEGER: 35375 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.9.1.3.1.1 = INTEGER: 73000 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.9.1.3.1.2 = INTEGER: 71000 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.9.1.4.1.1 = INTEGER: 33875 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.9.1.4.1.2 = INTEGER: 76125 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.9.1.4.1.3 = INTEGER: 75750 +.1.3.6.1.4.1.47196.4.1.1.3.11.3.1.1.9.1.4.1.4 = INTEGER: 76500 diff --git a/tests/network/aruba/aoscx/snmp/spanning-tree.robot b/tests/network/aruba/aoscx/snmp/spanning-tree.robot new file mode 100644 index 000000000..b76b778c5 --- /dev/null +++ b/tests/network/aruba/aoscx/snmp/spanning-tree.robot @@ -0,0 +1,31 @@ +*** Settings *** +Documentation Check port Spanning Tree Protocol current state (BRIDGE-MIB). + +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 *** +spanning-tree ${tc} + [Tags] network spanning-tree + ${command} Catenate + ... ${CMD} + ... --mode=spanning-tree + ... --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 spanning trees are ok + ... 2 --filter-port='Anonymized 147' OK: Port 'Anonymized 147' spanning tree state is 'forwarding' [op status: 'up'] [admin status: 'up'] [index: '1'] + ... 3 --warning-status='\\\%{op_status} =~ /up/ && \\\%{state} =~ /forwarding/' WARNING: Port 'Anonymized 147' spanning tree state is 'forwarding' [op status: 'up'] [admin status: 'up'] [index: '1'] - Port 'Anonymized 088' spanning tree state is 'forwarding' [op status: 'up'] [admin status: 'up'] [index: '3'] - Port 'Anonymized 218' spanning tree state is 'forwarding' [op status: 'up'] [admin status: 'up'] [index: '769'] + ... 4 --critical-status='\\\%{op_status} =~ /down/ && \\\%{state} =~ /blocking|broken/' CRITICAL: Port 'Anonymized 026' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '10'] - Port 'Anonymized 232' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '11'] - Port 'Anonymized 093' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '12'] - Port 'Anonymized 058' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '13'] - Port 'Anonymized 118' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '14'] - Port 'Anonymized 029' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '2'] - Port 'Anonymized 220' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '4'] - Port 'Anonymized 003' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '5'] - Port 'Anonymized 118' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '6'] - Port 'Anonymized 192' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '7'] - Port 'Anonymized 123' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '8'] - Port 'Anonymized 203' spanning tree state is 'blocking' [op status: 'down'] [admin status: 'up'] [index: '9'] \ No newline at end of file diff --git a/tests/network/aruba/aoscx/snmp/uptime.robot b/tests/network/aruba/aoscx/snmp/uptime.robot new file mode 100644 index 000000000..cde460edb --- /dev/null +++ b/tests/network/aruba/aoscx/snmp/uptime.robot @@ -0,0 +1,35 @@ +*** Settings *** +Documentation Check system uptime. + +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 *** +uptime ${tc} + [Tags] network aruba uptime + ${command} Catenate + ... ${CMD} + ... --mode=uptime + ... --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: System uptime is: 273d 7h 15m 11s | 'uptime'=23613311.00s;;;0; + ... 2 --warning-uptime=1.1 WARNING: System uptime is: 273d 7h 15m 11s | 'uptime'=23613311.00s;0:1.1;;0; + ... 3 --critical-uptime=12 CRITICAL: System uptime is: 273d 7h 15m 11s | 'uptime'=23613311.00s;;0:12;0; + ... 4 --add-sysdesc OK: System uptime is: 273d 7h 15m 11s, Anonymized 023 | 'uptime'=23613311.00s;;;0; + ... 5 --force-oid='.1.3.6.1.2.1.31.1.1.1.11.3' OK: System uptime is: 4901d 16h 34m 17s | 'uptime'=423506057.00s;;;0; + ... 6 --check-overload --reboot-window=4294967297 OK: System uptime is: 273d 7h 15m 11s | 'uptime'=23613311.00s;;;0; + ... 7 --reboot-window=100000 OK: System uptime is: 273d 7h 15m 11s | 'uptime'=23613311.00s;;;0; + ... 8 --unit='s' OK: System uptime is: 273d 7h 15m 11s | 'uptime'=23613311.00s;;;0; \ No newline at end of file diff --git a/tests/network/chapsvision/crossing/snmp/antivirus.robot b/tests/network/chapsvision/crossing/snmp/antivirus.robot new file mode 100644 index 000000000..f3a59c6cf --- /dev/null +++ b/tests/network/chapsvision/crossing/snmp/antivirus.robot @@ -0,0 +1,60 @@ +*** Settings *** +Documentation Check Chapsvision antivirus +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s + + +*** Variables *** +${cmd} ${CENTREON_PLUGINS} +... --plugin=network::chapsvision::crossing::snmp::plugin +... --mode=antivirus +... --hostname=${HOSTNAME} +... --snmp-version=${SNMPVERSION} +... --snmp-port=${SNMPPORT} +... --snmp-timeout=1 + + +*** Test Cases *** +Antivirus new ${tc} + [Documentation] Check the antivirus with the new OIDs + [Tags] network chapvision crossing + ${command} Catenate + ... ${cmd} + ... --snmp-community=network/chapsvision/crossing/snmp/chapsvision + ... ${extra_options} + + + Ctn Run Command And Check Result As Regexp ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${empty} OK: All antivirus are ok | 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106#antivirus.license.expires.seconds'=\\\\d+s;;;0; + ... 2 --warning-version='1' WARNING: antivirus 'Anonymized 008' version: 27031 - antivirus 'Anonymized 106' version: 26868 | 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106#antivirus.license.expires.seconds'=\\\\d+s;;;0; + ... 3 --critical-version='2' CRITICAL: antivirus 'Anonymized 008' version: 27031 - antivirus 'Anonymized 106' version: 26868 | 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106#antivirus.license.expires.seconds'=\\\\d+s;;;0; + ... 4 --warning-license-expires='1' WARNING: antivirus 'Anonymized 008' license expires in [\\\\dyMwdms ]*- antivirus 'Anonymized 106' license expires in [\\\\dyMwdms ]*| 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008#antivirus.license.expires.seconds'=\\\\d+s;0:1;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106#antivirus.license.expires.seconds'=\\\\d+s;0:1;;0; + ... 5 --critical-license-expires='1' CRITICAL: antivirus 'Anonymized 008' license expires in [\\\\dyMwdms ]*- antivirus 'Anonymized 106' license expires in [\\\\dyMwdms ]*| 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008#antivirus.license.expires.seconds'=\\\\d+s;;0:1;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106#antivirus.license.expires.seconds'=\\\\d+s;;0:1;0; + ... 6 --warning-database-last-update='1' WARNING: antivirus 'Anonymized 008' database last update [\\\\dyMwdms ]*- antivirus 'Anonymized 106' database last update [\\\\dyMwdms ]*| 'antivirus.database.lastupdate.seconds'=\\\\d+s;0:1;;0; 'Anonymized 008#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;0:1;;0; 'Anonymized 106#antivirus.license.expires.seconds'=\\\\d+s;;;0; + ... 7 --critical-database-last-update='1' CRITICAL: antivirus 'Anonymized 008' database last update [\\\\dyMwdms ]*- antivirus 'Anonymized 106' database last update [\\\\dyMwdms ]*| 'antivirus.database.lastupdate.seconds'=\\\\d+s;;0:1;0; 'Anonymized 008#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;0:1;0; 'Anonymized 106#antivirus.license.expires.seconds'=\\\\d+s;;;0; + + +Antivirus old ${tc} + [Documentation] Check the antivirus with the old OIDs + [Tags] network chapvision crossing + ${command} Catenate + ... ${cmd} + ... --snmp-community=network/chapsvision/crossing/snmp/chapsvision_old_oids + ... ${extra_options} + + + Ctn Run Command And Check Result As Regexp ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${empty} OK: All antivirus are ok | 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; + ... 2 --warning-version='1' WARNING: antivirus 'Anonymized 008-old' version: 27031 - antivirus 'Anonymized 106-old' version: 26868 | 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; + ... 3 --critical-version='2' CRITICAL: antivirus 'Anonymized 008-old' version: 27031 - antivirus 'Anonymized 106-old' version: 26868 | 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; + ... 4 --warning-license-expires='1' WARNING: antivirus 'Anonymized 008-old' license expires in [\\\\dyMwdms ]* - antivirus 'Anonymized 106-old' license expires in [\\\\dyMwdms ]*| 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008-old#antivirus.license.expires.seconds'=\\\\d+s;0:1;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106-old#antivirus.license.expires.seconds'=\\\\d+s;0:1;;0; + ... 5 --critical-license-expires='1' CRITICAL: antivirus 'Anonymized 008-old' license expires in [\\\\dyMwdms ]* - antivirus 'Anonymized 106-old' license expires in [\\\\dyMwdms ]*| 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 008-old#antivirus.license.expires.seconds'=\\\\d+s;;0:1;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;;0; 'Anonymized 106-old#antivirus.license.expires.seconds'=\\\\d+s;;0:1;0; + ... 6 --warning-database-last-update='1' WARNING: antivirus 'Anonymized 008-old' database last update [\\\\dyMwdms ]*- antivirus 'Anonymized 106-old' database last update [\\\\dyMwdms ]*| 'antivirus.database.lastupdate.seconds'=\\\\d+s;0:1;;0; 'Anonymized 008-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;0:1;;0; 'Anonymized 106-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; + ... 7 --critical-database-last-update='1' CRITICAL: antivirus 'Anonymized 008-old' database last update [\\\\dyMwdms ]*- antivirus 'Anonymized 106-old' database last update [\\\\dyMwdms ]*| 'antivirus.database.lastupdate.seconds'=\\\\d+s;;0:1;0; 'Anonymized 008-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; 'antivirus.database.lastupdate.seconds'=\\\\d+s;;0:1;0; 'Anonymized 106-old#antivirus.license.expires.seconds'=\\\\d+s;;;0; + + diff --git a/tests/network/chapsvision/crossing/snmp/chapsvision.snmpwalk b/tests/network/chapsvision/crossing/snmp/chapsvision.snmpwalk new file mode 100644 index 000000000..da0973a1e --- /dev/null +++ b/tests/network/chapsvision/crossing/snmp/chapsvision.snmpwalk @@ -0,0 +1,9 @@ +.1.3.6.1.4.1.50853.1.2.6.1.1.0 = STRING: Anonymized 106 +.1.3.6.1.4.1.50853.1.2.6.1.2.0 = STRING: "26868" +.1.3.6.1.4.1.50853.1.2.6.1.3.0 = STRING: 2025/01/01 +.1.3.6.1.4.1.50853.1.2.6.1.4.0 = STRING: 2030/01/01 +.1.3.6.1.4.1.50853.1.2.6.2.1.0 = STRING: Anonymized 008 +.1.3.6.1.4.1.50853.1.2.6.2.2.0 = STRING: "27031" +.1.3.6.1.4.1.50853.1.2.6.2.3.0 = STRING: 2025/01/01 +.1.3.6.1.4.1.50853.1.2.6.2.4.0 = STRING: 2030/01/01 + diff --git a/tests/network/chapsvision/crossing/snmp/chapsvision_old_oids.snmpwalk b/tests/network/chapsvision/crossing/snmp/chapsvision_old_oids.snmpwalk new file mode 100644 index 000000000..091f0c033 --- /dev/null +++ b/tests/network/chapsvision/crossing/snmp/chapsvision_old_oids.snmpwalk @@ -0,0 +1,9 @@ +.1.3.6.1.4.1.50853.1.2.6.1.1 = STRING: Anonymized 106-old +.1.3.6.1.4.1.50853.1.2.6.1.2 = STRING: "26868" +.1.3.6.1.4.1.50853.1.2.6.1.3 = STRING: 2025/01/01 +.1.3.6.1.4.1.50853.1.2.6.1.4 = STRING: 2030/01/01 +.1.3.6.1.4.1.50853.1.2.6.2.1 = STRING: Anonymized 008-old +.1.3.6.1.4.1.50853.1.2.6.2.2 = STRING: "27031" +.1.3.6.1.4.1.50853.1.2.6.2.3 = STRING: 2025/01/01 +.1.3.6.1.4.1.50853.1.2.6.2.4 = STRING: 2030/01/01 + diff --git a/tests/network/fortinet/fortigate/snmp/fortigate-vpn.snmpwalk b/tests/network/fortinet/fortigate/snmp/fortigate-vpn.snmpwalk new file mode 100644 index 000000000..90d5f8ba1 --- /dev/null +++ b/tests/network/fortinet/fortigate/snmp/fortigate-vpn.snmpwalk @@ -0,0 +1,38 @@ +.1.3.6.1.4.1.12356.101.3.2.1.1.2.1 = STRING: Anonymized 220 +.1.3.6.1.4.1.12356.101.12.2.2.1.3.1.1 = STRING: Anonymized 017 +.1.3.6.1.4.1.12356.101.12.2.2.1.3.2.1 = STRING: Anonymized 217 +.1.3.6.1.4.1.12356.101.12.2.2.1.3.11.1 = STRING: Anonymized 057 +.1.3.6.1.4.1.12356.101.12.2.2.1.3.12.1 = STRING: Anonymized 209 +.1.3.6.1.4.1.12356.101.12.2.2.1.3.13.1 = STRING: Anonymized 244 +.1.3.6.1.4.1.12356.101.12.2.2.1.3.14.1 = STRING: Anonymized 027 +.1.3.6.1.4.1.12356.101.12.2.2.1.18.1.1 = INTEGER: 116067 +.1.3.6.1.4.1.12356.101.12.2.2.1.18.2.1 = INTEGER: 107197 +.1.3.6.1.4.1.12356.101.12.2.2.1.18.11.1 = INTEGER: 1148670 +.1.3.6.1.4.1.12356.101.12.2.2.1.18.12.1 = INTEGER: 1147720 +.1.3.6.1.4.1.12356.101.12.2.2.1.18.13.1 = INTEGER: 437748426 +.1.3.6.1.4.1.12356.101.12.2.2.1.18.14.1 = INTEGER: 46064826 +.1.3.6.1.4.1.12356.101.12.2.2.1.19.1.1 = INTEGER: 85235 +.1.3.6.1.4.1.12356.101.12.2.2.1.19.2.1 = INTEGER: 81019 +.1.3.6.1.4.1.12356.101.12.2.2.1.19.11.1 = INTEGER: 914847 +.1.3.6.1.4.1.12356.101.12.2.2.1.19.12.1 = INTEGER: 890656 +.1.3.6.1.4.1.12356.101.12.2.2.1.19.13.1 = INTEGER: 951490605 +.1.3.6.1.4.1.12356.101.12.2.2.1.19.14.1 = INTEGER: 39146041 +.1.3.6.1.4.1.12356.101.12.2.2.1.20.1.1 = INTEGER: 2 +.1.3.6.1.4.1.12356.101.12.2.2.1.20.2.1 = INTEGER: 2 +.1.3.6.1.4.1.12356.101.12.2.2.1.20.11.1 = INTEGER: 2 +.1.3.6.1.4.1.12356.101.12.2.2.1.20.12.1 = INTEGER: 2 +.1.3.6.1.4.1.12356.101.12.2.2.1.20.13.1 = INTEGER: 2 +.1.3.6.1.4.1.12356.101.12.2.2.1.20.14.1 = INTEGER: 2 +.1.3.6.1.4.1.12356.101.12.2.2.1.21.1.1 = INTEGER: 1 +.1.3.6.1.4.1.12356.101.12.2.2.1.21.2.1 = INTEGER: 1 +.1.3.6.1.4.1.12356.101.12.2.2.1.21.11.1 = INTEGER: 1 +.1.3.6.1.4.1.12356.101.12.2.2.1.21.12.1 = INTEGER: 1 +.1.3.6.1.4.1.12356.101.12.2.2.1.21.13.1 = INTEGER: 1 +.1.3.6.1.4.1.12356.101.12.2.2.1.21.14.1 = INTEGER: 1 +.1.3.6.1.4.1.12356.101.12.2.3.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.12356.101.12.2.3.1.2.1 = INTEGER: 0 +.1.3.6.1.4.1.12356.101.12.2.3.1.3.1 = INTEGER: 0 +.1.3.6.1.4.1.12356.101.12.2.3.1.4.1 = INTEGER: 0 +.1.3.6.1.4.1.12356.101.12.2.3.1.5.1 = INTEGER: 0 +.1.3.6.1.4.1.12356.101.12.2.3.1.6.1 = INTEGER: 0 +.1.3.6.1.4.1.12356.101.12.2.3.1.7.1 = INTEGER: 0 diff --git a/tests/network/fortinet/fortigate/snmp/vpn.robot b/tests/network/fortinet/fortigate/snmp/vpn.robot new file mode 100644 index 000000000..ba6d86535 --- /dev/null +++ b/tests/network/fortinet/fortigate/snmp/vpn.robot @@ -0,0 +1,35 @@ +*** Settings *** +Documentation Check Vdomain statistics and VPN state and traffic. + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::fortinet::fortigate::snmp::plugin + +*** Test Cases *** +vpn ${tc} + [Tags] network snmp vpn + ${command} Catenate + ... ${CMD} + ... --mode=vpn + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/fortinet/fortigate/snmp/fortigate-vpn + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Verify Command Output ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} OK: Virtual domain 'Anonymized 220' Logged users: 0, Active web sessions: 0, Active tunnels: 0, IPSec tunnels state up: 6 - All vpn are ok | 'users'=0users;;;0; 'sessions'=0sessions;;;0; 'active_tunnels'=0tunnels;;;0; 'ipsec-tunnels-count'=6tunnels;;;0; + ... 2 --filter-vdomain='Anonymized 220' OK: Virtual domain 'Anonymized 220' Logged users: 0, Active web sessions: 0, Active tunnels: 0, IPSec tunnels state up: 6 - All vpn are ok | 'users'=0users;;;0; 'sessions'=0sessions;;;0; 'active_tunnels'=0tunnels;;;0; 'ipsec-tunnels-count'=6tunnels;;;0; + ... 3 --warning-status='\\\%{state} eq "up"' WARNING: Virtual domain 'Anonymized 220' Link 'Anonymized 017' state is 'up' - Link 'Anonymized 027' state is 'up' - Link 'Anonymized 057' state is 'up' + ... 4 --critical-status='\\\%{state} eq "up"' CRITICAL: Virtual domain 'Anonymized 220' Link 'Anonymized 017' state is 'up' - Link 'Anonymized 027' state is 'up' - Link 'Anonymized 057' state is 'up' + ... 5 --filter-vpn='500' --warning-sessions='@0:0' --critical-sessions='@2:2' --use-new-perfdata WARNING: Virtual domain 'Anonymized 220' Active web sessions: 0 | 'Anonymized 220#vpn.users.logged.count'=0users;;;0; 'Anonymized 220#vpn.websessions.active.count'=0sessions;@0:0;@2:2;0; 'Anonymized 220#vpn.tunnels.active.count'=0tunnels;;;0; 'Anonymized 220#vpn.ipsec.tunnels.state.count'=0tunnels;;;0; + ... 6 --warning-ipsec-tunnels-count='@1:1' --critical-ipsec-tunnels-count='@0:0' --use-new-perfdata --filter-vpn='_11' CRITICAL: Virtual domain 'Anonymized 220' IPSec tunnels state up: 0 | 'Anonymized 220#vpn.users.logged.count'=0users;;;0; 'Anonymized 220#vpn.websessions.active.count'=0sessions;;;0; 'Anonymized 220#vpn.tunnels.active.count'=0tunnels;;;0; 'Anonymized 220#vpn.ipsec.tunnels.state.count'=0tunnels;@1:1;@0:0;0; + ... 7 --critical-traffic-in='@0:0' --critical-traffic-out='@0:0' --use-new-perfdata --filter-vpn='_11' --filter-vdomain='Anonymized 220' OK: Virtual domain 'Anonymized 220' Logged users: 0, Active web sessions: 0, Active tunnels: 0, IPSec tunnels state up: 0 | 'Anonymized 220#vpn.users.logged.count'=0users;;;0; 'Anonymized 220#vpn.websessions.active.count'=0sessions;;;0; \ No newline at end of file diff --git a/tests/resources/resources.resource b/tests/resources/resources.resource index 75f3a1877..ca6820e7a 100644 --- a/tests/resources/resources.resource +++ b/tests/resources/resources.resource @@ -13,12 +13,16 @@ ${APIPORT} 3000 ${SNMPPORT} 2024 ${SNMPVERSION} 2c ${PERCENT} % - +${MOCKOON_LOG_FILE} /tmp/mockoon.log *** Keywords *** Start Mockoon [Arguments] ${MOCKOON_JSON} Ctn Generic Suite Setup + Remove File ${MOCKOON_LOG_FILE} + + ${time_start} Get Time str=epoch + ${process} Start Process ... mockoon-cli ... start @@ -26,10 +30,21 @@ Start Mockoon ... ${MOCKOON_JSON} ... --port ... 3000 - Sleep 10s + ... stdout=${MOCKOON_LOG_FILE} + + Wait Until Created ${MOCKOON_LOG_FILE} + Wait Until Keyword Succeeds + ... 30 + ... 1 + ... File Should Not Be Empty ${MOCKOON_LOG_FILE} + + ${time_end} Get Time str=epoch + ${duration} = Evaluate ${time_end} - ${time_start} + Log To Console Mockoon finished starting after ${duration} seconds Stop Mockoon Terminate All Processes + Remove File ${MOCKOON_LOG_FILE} Ctn Cleanup Cache Remove File ${/}var${/}lib${/}centreon${/}centplugins${/}* diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index 87cf6dbf9..c188d0893 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -24,6 +24,7 @@ api.meraki.com --api-username --api-version AppearTV +AS400 ASAM Avigilon Avocent @@ -109,11 +110,13 @@ in-mcast interface-dsl-name InterrupibleSleep in-ucast +io-cards iops IpAddr ip-label ipv4 ipv6 +ipsec ISAM Iwsva jmeter @@ -264,12 +267,15 @@ userpass v1 v2 vdom +vdomain VDSL2 Veeam VeloCloud VM VMware +VMWARE VPN +vpn vSAN Vserver vSphere diff --git a/tests/storage/emc/datadomain/snmp/cleaning.robot b/tests/storage/emc/datadomain/snmp/cleaning.robot index 161db0b71..5076884c8 100644 --- a/tests/storage/emc/datadomain/snmp/cleaning.robot +++ b/tests/storage/emc/datadomain/snmp/cleaning.robot @@ -31,8 +31,11 @@ cleaning ${tc} Examples: tc extra_options snmp_community expected_result -- - ... 1 ${EMPTY} storage/emc/datadomain/snmp/slim-datadomain OK: cleaning last execution: (\\\\d+[yY]] )?(\\\\d+M )?(\\\\d+w )?(\\\\d+d )?(\\\\d+h )?(\\\\d+m )?(\\\\d+s )?\\\\| 'filesystems.cleaning.execution.last.days'=\\\\d+d;;;0;$ - ... 2 --unit='w' storage/emc/datadomain/snmp/slim-datadomain OK: cleaning last execution: (\\\\d+[yY]] )?(\\\\d+M )?(\\\\d+w )?(\\\\d+d )?(\\\\d+h )?(\\\\d+m )?(\\\\d+s )?\\\\| 'filesystems.cleaning.execution.last.weeks'=\\\\d+w;;;0;$ - ... 3 --warning-last-cleaning-execution='115' storage/emc/datadomain/snmp/slim-datadomain WARNING: cleaning last execution: (\\\\d+[yY]] )?(\\\\d+M )?(\\\\d+w )?(\\\\d+d )?(\\\\d+h )?(\\\\d+m )?(\\\\d+s )?\\\\| 'filesystems.cleaning.execution.last.days'=\\\\d+d;0:115;;0; - ... 4 --critical-last-cleaning-execution='0' storage/emc/datadomain/snmp/slim-datadomain CRITICAL: cleaning last execution: (\\\\d+[yY]] )?(\\\\d+M )?(\\\\d+w )?(\\\\d+d )?(\\\\d+h )?(\\\\d+m )?(\\\\d+s )?\\\\| 'filesystems.cleaning.execution.last.days'=\\\\d+d;;0:0;0; - ... 5 ${EMPTY} storage/emc/datadomain/snmp/slim-datadomain-cleaning-running OK: cleaning last execution: running \\\\(phase 5 of 6 : copy\\\\) \\\\| 'filesystems.cleaning.execution.last.days'=0d;;;0; + ... 1 ${EMPTY} storage/emc/datadomain/snmp/slim-datadomain OK: cleaning last execution: (\\\\d+[yY]] )?(\\\\d+M )?(\\\\d+w )?(\\\\d+d )?(\\\\d+h )?(\\\\d+m )?(\\\\d+s )?\\\\| 'filesystems.cleaning.execution.last.days'=\\\\d+d;;;0;$ + ... 2 --unit='w' storage/emc/datadomain/snmp/slim-datadomain OK: cleaning last execution: (\\\\d+[yY]] )?(\\\\d+M )?(\\\\d+w )?(\\\\d+d )?(\\\\d+h )?(\\\\d+m )?(\\\\d+s )?\\\\| 'filesystems.cleaning.execution.last.weeks'=\\\\d+w;;;0;$ + ... 3 --warning-last-cleaning-execution='115' storage/emc/datadomain/snmp/slim-datadomain WARNING: cleaning last execution: (\\\\d+[yY]] )?(\\\\d+M )?(\\\\d+w )?(\\\\d+d )?(\\\\d+h )?(\\\\d+m )?(\\\\d+s )?\\\\| 'filesystems.cleaning.execution.last.days'=\\\\d+d;0:115;;0; + ... 4 --critical-last-cleaning-execution='0' storage/emc/datadomain/snmp/slim-datadomain CRITICAL: cleaning last execution: (\\\\d+[yY]] )?(\\\\d+M )?(\\\\d+w )?(\\\\d+d )?(\\\\d+h )?(\\\\d+m )?(\\\\d+s )?\\\\| 'filesystems.cleaning.execution.last.days'=\\\\d+d;;0:0;0; + ... 5 ${EMPTY} storage/emc/datadomain/snmp/slim-datadomain-cleaning-running OK: cleaning last execution: running \\\\(phase 5 of 6 : copy\\\\) \\\\| 'filesystems.cleaning.execution.last.days'=0d;;;0; + ... 6 --timezone='Europe/Paris' storage/emc/datadomain/snmp/slim-datadomain-cleaning-ok OK: cleaning last execution: .* \\\\| 'filesystems.cleaning.execution.last.days'=\\\\d+d;;;0; + ... 7 --timezone='America/Los_Angeles' storage/emc/datadomain/snmp/slim-datadomain-cleaning-ok OK: cleaning last execution: .* \\\\| 'filesystems.cleaning.execution.last.days'=\\\\d+d;;;0; + ... 8 --timezone='bad/timezone' storage/emc/datadomain/snmp/slim-datadomain-cleaning-ok UNKNOWN: Invalid timezone provided: 'bad/timezone'. Check in /usr/share/zoneinfo for valid time zones. diff --git a/tests/storage/emc/datadomain/snmp/slim-datadomain-cleaning-ok.snmpwalk b/tests/storage/emc/datadomain/snmp/slim-datadomain-cleaning-ok.snmpwalk new file mode 100644 index 000000000..fde49dfa9 --- /dev/null +++ b/tests/storage/emc/datadomain/snmp/slim-datadomain-cleaning-ok.snmpwalk @@ -0,0 +1 @@ +.1.3.6.1.4.1.19746.1.3.5.1.1.2.0 = STRING: Cleaning finished at 2025/02/17 09:55:44. \ No newline at end of file diff --git a/tests/storage/netapp/ontap/restapi/aggregates.robot b/tests/storage/netapp/ontap/restapi/aggregates.robot index e17fa3ebd..2e44c0eda 100644 --- a/tests/storage/netapp/ontap/restapi/aggregates.robot +++ b/tests/storage/netapp/ontap/restapi/aggregates.robot @@ -31,8 +31,8 @@ Aggregates ${tc} Ctn Run Command And Check Result As Strings ${command} ${expected_result} Examples: tc extra_options expected_result -- - ... 1 ${EMPTY} OK: Aggregates 'aggregate1' state: online, space usage total: 9.46 GB used: 1.99 MB (0.02%) free: 9.46 GB (100.00%), other : skipped (no value(s)), read iops: 500, write iops: 200, other-iops : skipped (no value(s)), total iops: 1000, read latency: 500 µs, write latency: 200 µs, other-latency : skipped (no value(s)), total latency: 1000 µs | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;;;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; - ... 2 --warning-status='\\\%{state} !~ /notonline/i' WARNING: Aggregates 'aggregate1' state: online | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;;;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; - ... 3 --critical-status='\\\%{state} !~ /notonline/i' CRITICAL: Aggregates 'aggregate1' state: online | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;;;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; - ... 6 --warning-usage-prct=50:50 WARNING: Aggregates 'aggregate1' used : 0.02 % | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;50:50;;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; - ... 7 --critical-usage-prct=50:50 CRITICAL: Aggregates 'aggregate1' used : 0.02 % | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;;50:50;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; \ No newline at end of file + ... 1 ${EMPTY} OK: Aggregates 'aggregate1' state: online, space usage total: 9.46 GB used: 1.99 MB (0.02%) free: 9.46 GB (100.00%), read iops: 500, write iops: 200, other iops: 100, total iops: 1000, read latency: 500 µs, write latency: 200 µs, other latency: 100 µs, total latency: 1000 µs | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;;;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.other.usage.bytespersecond'=100B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.other.usage.iops'=100iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.other.latency.microseconds'=100µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; + ... 2 --warning-status='\\\%{state} !~ /notonline/i' WARNING: Aggregates 'aggregate1' state: online | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;;;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.other.usage.bytespersecond'=100B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.other.usage.iops'=100iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.other.latency.microseconds'=100µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; + ... 3 --critical-status='\\\%{state} !~ /notonline/i' CRITICAL: Aggregates 'aggregate1' state: online | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;;;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.other.usage.bytespersecond'=100B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.other.usage.iops'=100iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.other.latency.microseconds'=100µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; + ... 6 --warning-usage-prct=50:50 WARNING: Aggregates 'aggregate1' used : 0.02 % | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;50:50;;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.other.usage.bytespersecond'=100B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.other.usage.iops'=100iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.other.latency.microseconds'=100µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; + ... 7 --critical-usage-prct=50:50 CRITICAL: Aggregates 'aggregate1' used : 0.02 % | 'aggregate1#aggregate.space.usage.bytes'=2088960B;;;0;10156769280 'aggregate1#aggregate.space.free.bytes'=10156560384B;;;0;10156769280 'aggregate1#aggregate.space.usage.percentage'=0.02%;;50:50;0;100 'aggregate1#aggregate.io.read.usage.bytespersecond'=500B/s;;;; 'aggregate1#aggregate.io.write.usage.bytespersecond'=200B/s;;;0; 'aggregate1#aggregate.io.other.usage.bytespersecond'=100B/s;;;0; 'aggregate1#aggregate.io.total.usage.bytespersecond'=1000B/s;;;0; 'aggregate1#aggregate.io.read.usage.iops'=500iops;;;0; 'aggregate1#aggregate.io.write.usage.iops'=200iops;;;0; 'aggregate1#aggregate.io.other.usage.iops'=100iops;;;0; 'aggregate1#aggregate.io.total.usage.iops'=1000iops;;;0; 'aggregate1#aggregate.io.read.latency.microseconds'=500µs;;;0; 'aggregate1#aggregate.io.write.latency.microseconds'=200µs;;;0; 'aggregate1#aggregate.io.other.latency.microseconds'=100µs;;;0; 'aggregate1#aggregate.io.total.latency.microseconds'=1000µs;;;0; \ No newline at end of file diff --git a/tests/storage/netapp/ontap/restapi/cluster.robot b/tests/storage/netapp/ontap/restapi/cluster.robot index f1a51a038..d494fb91b 100644 --- a/tests/storage/netapp/ontap/restapi/cluster.robot +++ b/tests/storage/netapp/ontap/restapi/cluster.robot @@ -31,7 +31,7 @@ Cluster ${tc} Ctn Run Command And Check Result As Strings ${command} ${expected_result} Examples: tc extra_options expected_result -- - ... 1 ${EMPTY} OK: cluster 'cluster1' read : Buffer creation, write : Buffer creation, other : skipped (no value(s)), total : Buffer creation, read iops: 200, write iops: 100, other-iops : skipped (no value(s)), total iops: 1000, read latency: 200 ms, write latency: 100 ms, other-latency : skipped (no value(s)), total latency: 1000 ms - node 'node-01' state: online [link status: string] | 'cluster1#cluster.io.read.usage.iops'=200iops;;;0; 'cluster1#cluster.io.write.usage.iops'=100iops;;;0; 'cluster1#cluster.io.total.usage.iops'=1000iops;;;0; 'cluster.io.read.latency.milliseconds'=200ms;;;0; 'cluster1#cluster.io.write.latency.milliseconds'=100ms;;;0; 'cluster1#cluster.io.total.latency.milliseconds'=1000ms;;;0; - ... 2 ${EMPTY} OK: cluster 'cluster1' other : skipped (no value(s)), read iops: 200, write iops: 100, other-iops : skipped (no value(s)), total iops: 1000, read latency: 200 ms, write latency: 100 ms, other-latency : skipped (no value(s)), total latency: 1000 ms - node 'node-01' state: online [link status: string] | 'cluster1#cluster.io.read.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.write.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.total.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.read.usage.iops'=200iops;;;0; 'cluster1#cluster.io.write.usage.iops'=100iops;;;0; 'cluster1#cluster.io.total.usage.iops'=1000iops;;;0; 'cluster.io.read.latency.milliseconds'=200ms;;;0; 'cluster1#cluster.io.write.latency.milliseconds'=100ms;;;0; 'cluster1#cluster.io.total.latency.milliseconds'=1000ms;;;0; - ... 3 --warning-node-status='\\\%{state} !~ /notonline/i' WARNING: cluster 'cluster1' node 'node-01' state: online [link status: string] | 'cluster1#cluster.io.read.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.write.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.total.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.read.usage.iops'=200iops;;;0; 'cluster1#cluster.io.write.usage.iops'=100iops;;;0; 'cluster1#cluster.io.total.usage.iops'=1000iops;;;0; 'cluster.io.read.latency.milliseconds'=200ms;;;0; 'cluster1#cluster.io.write.latency.milliseconds'=100ms;;;0; 'cluster1#cluster.io.total.latency.milliseconds'=1000ms;;;0; - ... 4 --critical-node-status='\\\%{state} !~ /notonline/i' CRITICAL: cluster 'cluster1' node 'node-01' state: online [link status: string] | 'cluster1#cluster.io.read.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.write.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.total.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.read.usage.iops'=200iops;;;0; 'cluster1#cluster.io.write.usage.iops'=100iops;;;0; 'cluster1#cluster.io.total.usage.iops'=1000iops;;;0; 'cluster.io.read.latency.milliseconds'=200ms;;;0; 'cluster1#cluster.io.write.latency.milliseconds'=100ms;;;0; 'cluster1#cluster.io.total.latency.milliseconds'=1000ms;;;0; + ... 1 ${EMPTY} OK: cluster 'cluster1' read : Buffer creation, write : Buffer creation, other : Buffer creation, total : Buffer creation, read iops: 200, write iops: 100, other iops: 100, total iops: 1000, read latency: 200 ms, write latency: 100 ms, other latency: 100 ms, total latency: 1000 ms - node 'node-01' state: online [link status: string] | 'cluster1#cluster.io.read.usage.iops'=200iops;;;0; 'cluster1#cluster.io.write.usage.iops'=100iops;;;0; 'cluster1#cluster.io.other.usage.iops'=100iops;;;0; 'cluster1#cluster.io.total.usage.iops'=1000iops;;;0; 'cluster.io.read.latency.milliseconds'=200ms;;;0; 'cluster1#cluster.io.write.latency.milliseconds'=100ms;;;0; 'cluster.io.other.latency.milliseconds'=100ms;;;0; 'cluster1#cluster.io.total.latency.milliseconds'=1000ms;;;0; + ... 2 ${EMPTY} OK: cluster 'cluster1' read iops: 200, write iops: 100, other iops: 100, total iops: 1000, read latency: 200 ms, write latency: 100 ms, other latency: 100 ms, total latency: 1000 ms - node 'node-01' state: online [link status: string] | 'cluster1#cluster.io.read.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.write.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.other.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.total.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.read.usage.iops'=200iops;;;0; 'cluster1#cluster.io.write.usage.iops'=100iops;;;0; 'cluster1#cluster.io.other.usage.iops'=100iops;;;0; 'cluster1#cluster.io.total.usage.iops'=1000iops;;;0; 'cluster.io.read.latency.milliseconds'=200ms;;;0; 'cluster1#cluster.io.write.latency.milliseconds'=100ms;;;0; 'cluster.io.other.latency.milliseconds'=100ms;;;0; 'cluster1#cluster.io.total.latency.milliseconds'=1000ms;;;0; + ... 3 --warning-node-status='\\\%{state} !~ /notonline/i' WARNING: cluster 'cluster1' node 'node-01' state: online [link status: string] | 'cluster1#cluster.io.read.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.write.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.other.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.total.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.read.usage.iops'=200iops;;;0; 'cluster1#cluster.io.write.usage.iops'=100iops;;;0; 'cluster1#cluster.io.other.usage.iops'=100iops;;;0; 'cluster1#cluster.io.total.usage.iops'=1000iops;;;0; 'cluster.io.read.latency.milliseconds'=200ms;;;0; 'cluster1#cluster.io.write.latency.milliseconds'=100ms;;;0; 'cluster.io.other.latency.milliseconds'=100ms;;;0; 'cluster1#cluster.io.total.latency.milliseconds'=1000ms;;;0; + ... 4 --critical-node-status='\\\%{state} !~ /notonline/i' CRITICAL: cluster 'cluster1' node 'node-01' state: online [link status: string] | 'cluster1#cluster.io.read.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.write.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.other.usage.bytespersecond'=0B/s;;;; 'cluster1#cluster.io.total.usage.bytespersecond'=0B/s;;;0; 'cluster1#cluster.io.read.usage.iops'=200iops;;;0; 'cluster1#cluster.io.write.usage.iops'=100iops;;;0; 'cluster1#cluster.io.other.usage.iops'=100iops;;;0; 'cluster1#cluster.io.total.usage.iops'=1000iops;;;0; 'cluster.io.read.latency.milliseconds'=200ms;;;0; 'cluster1#cluster.io.write.latency.milliseconds'=100ms;;;0; 'cluster.io.other.latency.milliseconds'=100ms;;;0; 'cluster1#cluster.io.total.latency.milliseconds'=1000ms;;;0; diff --git a/tests/storage/netapp/ontap/restapi/netapp.json b/tests/storage/netapp/ontap/restapi/netapp.json index 895892e75..1d495921a 100644 --- a/tests/storage/netapp/ontap/restapi/netapp.json +++ b/tests/storage/netapp/ontap/restapi/netapp.json @@ -17,7 +17,7 @@ "responses": [ { "uuid": "ef8f650f-c3cb-4948-b907-3b31a284a065", - "body": "{\r\n \"records\": [\r\n {\r\n \"state\": \"online\",\r\n \"name\": \"volume1\",\r\n \"space\": {\r\n \"auto_adaptive_compression_footprint_data_reduction\": 0,\r\n \"available\": 421353881600,\r\n \"size\": 4398046511104,\r\n \"block_storage_inactive_user_data\": 0,\r\n \"block_storage_inactive_user_data_percent\": 0,\r\n \"capacity_tier_footprint\": 0,\r\n \"capacity_tier_footprint_data_reduction\": 0,\r\n \"compaction_footprint_data_reduction\": 0,\r\n \"cross_volume_dedupe_metafiles_footprint\": 0,\r\n \"cross_volume_dedupe_metafiles_temporary_footprint\": 0,\r\n \"dedupe_metafiles_footprint\": 0,\r\n \"dedupe_metafiles_temporary_footprint\": 0,\r\n \"delayed_free_footprint\": 0,\r\n \"effective_total_footprint\": 0,\r\n \"file_operation_metadata\": 0,\r\n \"filesystem_size\": 0,\r\n \"footprint\": 0,\r\n \"local_tier_footprint\": 0,\r\n \"max_size\": \"string\",\r\n \"logical_space\": {\r\n \"available\": 348998594560,\r\n \"used\": 3169438617600,\r\n \"used_by_afs\": 0,\r\n \"used_by_snapshots\": 0,\r\n \"used_percent\": 90\r\n },\r\n \"metadata\": 0,\r\n \"over_provisioned\": 0,\r\n \"overwrite_reserve\": 0,\r\n \"overwrite_reserve_used\": 0,\r\n \"percent_used\": 0,\r\n \"performance_tier_footprint\": 0,\r\n \"size_available_for_snapshots\": 0,\r\n \"snapmirror_destination_footprint\": 0,\r\n \"snapshot\": {\r\n \"autodelete\": {\r\n \"commitment\": \"string\",\r\n \"defer_delete\": \"string\",\r\n \"delete_order\": \"string\",\r\n \"prefix\": \"string\",\r\n \"trigger\": \"string\"\r\n },\r\n \"autodelete_trigger\": \"string\",\r\n \"reserve_available\": 0,\r\n \"reserve_size\": 0,\r\n \"space_used_percent\": 0,\r\n \"used\": 0\r\n },\r\n \"snapshot_reserve_unusable\": 0,\r\n \"snapshot_spill\": 0,\r\n \"total_footprint\": 0,\r\n \"total_metadata\": 0,\r\n \"total_metadata_footprint\": 0,\r\n \"used\": 3097083330560,\r\n \"user_data\": 0,\r\n \"volume_guarantee_footprint\": 0\r\n },\r\n \"svm\": {\r\n \"name\": \"svm1\",\r\n \"uuid\": \"02c9e252-41be-11e9-81d5-00a0986138f7\"\r\n },\r\n \"uuid\": \"028baa66-41bd-11e9-81d5-00a0986138f7\"\r\n }\r\n ]\r\n}", + "body": "{\r\n \"records\": [\r\n {\r\n \"state\": \"online\",\r\n \"name\": \"volume1\",\r\n \"space\": {\r\n \"auto_adaptive_compression_footprint_data_reduction\": 0,\r\n \"available\": 421353881600,\r\n \"size\": 4398046511104,\r\n \"block_storage_inactive_user_data\": 0,\r\n \"block_storage_inactive_user_data_percent\": 0,\r\n \"capacity_tier_footprint\": 0,\r\n \"capacity_tier_footprint_data_reduction\": 0,\r\n \"compaction_footprint_data_reduction\": 0,\r\n \"cross_volume_dedupe_metafiles_footprint\": 0,\r\n \"cross_volume_dedupe_metafiles_temporary_footprint\": 0,\r\n \"dedupe_metafiles_footprint\": 0,\r\n \"dedupe_metafiles_temporary_footprint\": 0,\r\n \"delayed_free_footprint\": 0,\r\n \"effective_total_footprint\": 0,\r\n \"file_operation_metadata\": 0,\r\n \"filesystem_size\": 0,\r\n \"footprint\": 0,\r\n \"local_tier_footprint\": 0,\r\n \"max_size\": \"string\",\r\n \"logical_space\": {\r\n \"available\": 348998594560,\r\n \"used\": 3169438617600,\r\n \"used_by_afs\": 0,\r\n \"used_by_snapshots\": 0,\r\n \"used_percent\": 90\r\n },\r\n \"metadata\": 0,\r\n \"over_provisioned\": 0,\r\n \"overwrite_reserve\": 0,\r\n \"overwrite_reserve_used\": 0,\r\n \"percent_used\": 0,\r\n \"performance_tier_footprint\": 0,\r\n \"size_available_for_snapshots\": 0,\r\n \"snapmirror_destination_footprint\": 0,\r\n \"snapshot\": {\r\n \"autodelete\": {\r\n \"commitment\": \"string\",\r\n \"defer_delete\": \"string\",\r\n \"delete_order\": \"string\",\r\n \"prefix\": \"string\",\r\n \"trigger\": \"string\"\r\n },\r\n \"autodelete_trigger\": \"string\",\r\n \"reserve_available\": 0,\r\n \"reserve_size\": 0,\r\n \"space_used_percent\": 0,\r\n \"used\": 0\r\n },\r\n \"snapshot_reserve_unusable\": 0,\r\n \"snapshot_spill\": 0,\r\n \"total_footprint\": 0,\r\n \"total_metadata\": 0,\r\n \"total_metadata_footprint\": 0,\r\n \"used\": 3097083330560,\r\n \"user_data\": 0,\r\n \"volume_guarantee_footprint\": 0\r\n },\r\n \"metric\": {\r\n \"cloud\": {\r\n \"duration\": \"PT15S\",\r\n \"iops\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"latency\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"status\": \"ok\",\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n },\r\n \"duration\": \"PT15S\",\r\n \"flexcache\": {\r\n \"bandwidth_savings\": 4096,\r\n \"cache_miss_percent\": 20,\r\n \"duration\": \"PT1D\",\r\n \"status\": \"ok\",\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n },\r\n \"iops\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"latency\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"status\": \"ok\",\r\n \"throughput\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n },\r\n \"svm\": {\r\n \"name\": \"svm1\",\r\n \"uuid\": \"02c9e252-41be-11e9-81d5-00a0986138f7\"\r\n },\r\n \"uuid\": \"028baa66-41bd-11e9-81d5-00a0986138f7\"\r\n }\r\n ]\r\n}", "latency": 0, "statusCode": 200, "label": "", @@ -51,7 +51,7 @@ }, { "uuid": "2fc4bd82-8f83-4344-bfd7-baa50e6c544a", - "body": "{\r\n \"records\": [\r\n {\r\n \"state\": \"online\",\r\n \"name\": \"volume1\",\r\n \"space\": {\r\n \"auto_adaptive_compression_footprint_data_reduction\": 0,\r\n \"available\": 421353881600,\r\n \"size\": 4398046511104,\r\n \"block_storage_inactive_user_data\": 0,\r\n \"block_storage_inactive_user_data_percent\": 0,\r\n \"capacity_tier_footprint\": 0,\r\n \"capacity_tier_footprint_data_reduction\": 0,\r\n \"compaction_footprint_data_reduction\": 0,\r\n \"cross_volume_dedupe_metafiles_footprint\": 0,\r\n \"cross_volume_dedupe_metafiles_temporary_footprint\": 0,\r\n \"dedupe_metafiles_footprint\": 0,\r\n \"dedupe_metafiles_temporary_footprint\": 0,\r\n \"delayed_free_footprint\": 0,\r\n \"effective_total_footprint\": 0,\r\n \"file_operation_metadata\": 0,\r\n \"filesystem_size\": 0,\r\n \"footprint\": 0,\r\n \"local_tier_footprint\": 0,\r\n \"max_size\": \"string\",\r\n \"metadata\": 0,\r\n \"over_provisioned\": 0,\r\n \"overwrite_reserve\": 0,\r\n \"overwrite_reserve_used\": 0,\r\n \"percent_used\": 0,\r\n \"performance_tier_footprint\": 0,\r\n \"size_available_for_snapshots\": 0,\r\n \"snapmirror_destination_footprint\": 0,\r\n \"snapshot\": {\r\n \"autodelete\": {\r\n \"commitment\": \"string\",\r\n \"defer_delete\": \"string\",\r\n \"delete_order\": \"string\",\r\n \"prefix\": \"string\",\r\n \"trigger\": \"string\"\r\n },\r\n \"autodelete_trigger\": \"string\",\r\n \"reserve_available\": 0,\r\n \"reserve_size\": 0,\r\n \"space_used_percent\": 0,\r\n \"used\": 0\r\n },\r\n \"snapshot_reserve_unusable\": 0,\r\n \"snapshot_spill\": 0,\r\n \"total_footprint\": 0,\r\n \"total_metadata\": 0,\r\n \"total_metadata_footprint\": 0,\r\n \"used\": 3097083330560,\r\n \"user_data\": 0,\r\n \"volume_guarantee_footprint\": 0\r\n },\r\n \"svm\": {\r\n \"name\": \"svm1\",\r\n \"uuid\": \"02c9e252-41be-11e9-81d5-00a0986138f7\"\r\n },\r\n \"uuid\": \"028baa66-41bd-11e9-81d5-00a0986138f7\"\r\n }\r\n ]\r\n}", + "body": "{\r\n \"records\": [\r\n {\r\n \"state\": \"online\",\r\n \"name\": \"volume1\",\r\n \"space\": {\r\n \"auto_adaptive_compression_footprint_data_reduction\": 0,\r\n \"available\": 421353881600,\r\n \"size\": 4398046511104,\r\n \"block_storage_inactive_user_data\": 0,\r\n \"block_storage_inactive_user_data_percent\": 0,\r\n \"capacity_tier_footprint\": 0,\r\n \"capacity_tier_footprint_data_reduction\": 0,\r\n \"compaction_footprint_data_reduction\": 0,\r\n \"cross_volume_dedupe_metafiles_footprint\": 0,\r\n \"cross_volume_dedupe_metafiles_temporary_footprint\": 0,\r\n \"dedupe_metafiles_footprint\": 0,\r\n \"dedupe_metafiles_temporary_footprint\": 0,\r\n \"delayed_free_footprint\": 0,\r\n \"effective_total_footprint\": 0,\r\n \"file_operation_metadata\": 0,\r\n \"filesystem_size\": 0,\r\n \"footprint\": 0,\r\n \"local_tier_footprint\": 0,\r\n \"max_size\": \"string\",\r\n \"metadata\": 0,\r\n \"over_provisioned\": 0,\r\n \"overwrite_reserve\": 0,\r\n \"overwrite_reserve_used\": 0,\r\n \"percent_used\": 0,\r\n \"performance_tier_footprint\": 0,\r\n \"size_available_for_snapshots\": 0,\r\n \"snapmirror_destination_footprint\": 0,\r\n \"snapshot\": {\r\n \"autodelete\": {\r\n \"commitment\": \"string\",\r\n \"defer_delete\": \"string\",\r\n \"delete_order\": \"string\",\r\n \"prefix\": \"string\",\r\n \"trigger\": \"string\"\r\n },\r\n \"autodelete_trigger\": \"string\",\r\n \"reserve_available\": 0,\r\n \"reserve_size\": 0,\r\n \"space_used_percent\": 0,\r\n \"used\": 0\r\n },\r\n \"snapshot_reserve_unusable\": 0,\r\n \"snapshot_spill\": 0,\r\n \"total_footprint\": 0,\r\n \"total_metadata\": 0,\r\n \"total_metadata_footprint\": 0,\r\n \"used\": 3097083330560,\r\n \"user_data\": 0,\r\n \"volume_guarantee_footprint\": 0\r\n },\r\n \"metric\": {\r\n \"cloud\": {\r\n \"duration\": \"PT15S\",\r\n \"iops\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"latency\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"status\": \"ok\",\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n },\r\n \"duration\": \"PT15S\",\r\n \"flexcache\": {\r\n \"bandwidth_savings\": 4096,\r\n \"cache_miss_percent\": 20,\r\n \"duration\": \"PT1D\",\r\n \"status\": \"ok\",\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n },\r\n \"iops\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"latency\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"status\": \"ok\",\r\n \"throughput\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n },\r\n \"svm\": {\r\n \"name\": \"svm1\",\r\n \"uuid\": \"02c9e252-41be-11e9-81d5-00a0986138f7\"\r\n },\r\n \"uuid\": \"028baa66-41bd-11e9-81d5-00a0986138f7\"\r\n }\r\n ]\r\n}", "latency": 0, "statusCode": 200, "label": "", @@ -144,7 +144,7 @@ "responses": [ { "uuid": "e865d16b-1ee0-4869-9cf3-9442dae20e91", - "body": "{\r\n \"metric\": {\r\n \"duration\": \"PT15S\",\r\n \"iops\": {\r\n \"read\": 500,\r\n \"total\": 1000,\r\n \"write\": 200\r\n },\r\n \"latency\": {\r\n \"read\": 500,\r\n \"total\": 1000,\r\n \"write\": 200\r\n },\r\n \"throughput\": {\r\n \"read\": 500,\r\n \"total\": 1000,\r\n \"write\": 200\r\n }\r\n }\r\n}", + "body": "{\r\n \"metric\": {\r\n \"duration\": \"PT15S\",\r\n \"iops\": {\r\n \"read\": 500,\r\n \"total\": 1000,\r\n \"write\": 200,\r\n \"other\": 100\r\n },\r\n \"latency\": {\r\n \"read\": 500,\r\n \"total\": 1000,\r\n \"write\": 200,\r\n \"other\": 100\r\n },\r\n \"throughput\": {\r\n \"read\": 500,\r\n \"total\": 1000,\r\n \"write\": 200,\r\n \"other\": 100\r\n }\r\n }\r\n}", "latency": 0, "statusCode": 200, "label": "", @@ -231,7 +231,7 @@ { "target": "query", "modifier": "fields", - "value": "name,state,serial_number,bay", + "value": "name,state,serial_number,bays", "invert": false, "operator": "equals" } @@ -268,7 +268,7 @@ { "target": "query", "modifier": "fields", - "value": "name,state,serial_number,bay,frus", + "value": "name,state,serial_number,bays,frus", "invert": false, "operator": "equals" } @@ -403,7 +403,7 @@ "responses": [ { "uuid": "1347a6b4-a393-4ff2-84c7-729b23c7f64a", - "body": "{\r\n \"metric\": {\r\n \"_links\": {\r\n \"self\": {\r\n \"href\": \"/api/resourcelink\"\r\n }\r\n },\r\n \"duration\": \"PT15S\",\r\n \"iops\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"latency\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"status\": \"ok\",\r\n \"throughput\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n },\r\n \"name\": \"cluster1\",\r\n \"statistics\": {\r\n \"iops_raw\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"latency_raw\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"status\": \"ok\",\r\n \"throughput_raw\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n }\r\n}", + "body": "{\r\n \"metric\": {\r\n \"_links\": {\r\n \"self\": {\r\n \"href\": \"/api/resourcelink\"\r\n }\r\n },\r\n \"duration\": \"PT15S\",\r\n \"iops\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"latency\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"status\": \"ok\",\r\n \"throughput\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n },\r\n \"name\": \"cluster1\",\r\n \"statistics\": {\r\n \"iops_raw\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"latency_raw\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100\r\n },\r\n \"status\": \"ok\",\r\n \"throughput_raw\": {\r\n \"read\": 200,\r\n \"total\": 1000,\r\n \"write\": 100,\r\n \"other\": 100\r\n },\r\n \"timestamp\": \"2017-01-25 06:20:13 -0500\"\r\n }\r\n}", "latency": 0, "statusCode": 200, "label": "", diff --git a/tests/storage/netapp/ontap/restapi/volumes.robot b/tests/storage/netapp/ontap/restapi/volumes.robot index 382f9d22e..8f963a54f 100644 --- a/tests/storage/netapp/ontap/restapi/volumes.robot +++ b/tests/storage/netapp/ontap/restapi/volumes.robot @@ -31,12 +31,12 @@ Volumes ${tc} Ctn Run Command And Check Result As Strings ${command} ${expected_result} Examples: tc extra_options expected_result -- - ... 1 ${EMPTY} OK: Volume 'svm1:volume1' state: online, space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%), logical-usage : skipped (no value(s)), logical-usage-free : skipped (no value(s)), logical-usage-prct : skipped (no value(s)), read : skipped (no value(s)), write : skipped (no value(s)), other : skipped (no value(s)), total : skipped (no value(s)), read-iops : skipped (no value(s)), write-iops : skipped (no value(s)), other-iops : skipped (no value(s)), total-iops : skipped (no value(s)), read-latency : skipped (no value(s)), write-latency : skipped (no value(s)), other-latency : skipped (no value(s)), total-latency : skipped (no value(s)) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 - ... 2 --filter-volume-name='volume1' OK: Volume 'svm1:volume1' state: online, space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%), logical space usage total: 3.20 TB used: 2.88 TB (90.00%) free: 325.03 GB (10.00%), read : skipped (no value(s)), write : skipped (no value(s)), other : skipped (no value(s)), total : skipped (no value(s)), read-iops : skipped (no value(s)), write-iops : skipped (no value(s)), other-iops : skipped (no value(s)), total-iops : skipped (no value(s)), read-latency : skipped (no value(s)), write-latency : skipped (no value(s)), other-latency : skipped (no value(s)), total-latency : skipped (no value(s)) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.logicalspace.usage.bytes'=3169438617600B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.free.bytes'=348998594560B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.usage.percentage'=90.00%;;;0;100 - ... 3 --filter-name='volume1' OK: Volume 'svm1:volume1' state: online, space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%), logical-usage : skipped (no value(s)), logical-usage-free : skipped (no value(s)), logical-usage-prct : skipped (no value(s)), read : skipped (no value(s)), write : skipped (no value(s)), other : skipped (no value(s)), total : skipped (no value(s)), read-iops : skipped (no value(s)), write-iops : skipped (no value(s)), other-iops : skipped (no value(s)), total-iops : skipped (no value(s)), read-latency : skipped (no value(s)), write-latency : skipped (no value(s)), other-latency : skipped (no value(s)), total-latency : skipped (no value(s)) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 - ... 4 --warning-status='\\\%{state} !~ /notonline/i' WARNING: Volume 'svm1:volume1' state: online | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 - ... 5 --critical-status='\\\%{state} !~ /notonline/i' CRITICAL: Volume 'svm1:volume1' state: online | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 - ... 6 --warning-usage-prct=50 WARNING: Volume 'svm1:volume1' space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;0:50;;0;100 - ... 7 --critical-usage-prct=50 CRITICAL: Volume 'svm1:volume1' space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;0:50;0;100 - ... 8 --filter-volume-name='volume1' --warning-logical-usage-prct=50 WARNING: Volume 'svm1:volume1' logical space usage total: 3.20 TB used: 2.88 TB (90.00%) free: 325.03 GB (10.00%) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.logicalspace.usage.bytes'=3169438617600B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.free.bytes'=348998594560B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.usage.percentage'=90.00%;0:50;;0;100 - ... 9 --filter-volume-name='volume1' --critical-logical-usage-prct=50 CRITICAL: Volume 'svm1:volume1' logical space usage total: 3.20 TB used: 2.88 TB (90.00%) free: 325.03 GB (10.00%) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.logicalspace.usage.bytes'=3169438617600B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.free.bytes'=348998594560B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.usage.percentage'=90.00%;;0:50;0;100 + ... 1 ${EMPTY} OK: Volume 'svm1:volume1' state: online, space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%), logical-usage : skipped (no value(s)), logical-usage-free : skipped (no value(s)), logical-usage-prct : skipped (no value(s)), read iops: 200, write iops: 100, other iops: 100, total iops: 1000, read latency: 0.2 ms, write latency: 0.1 ms, other latency: 0.1 ms, total latency: 1 ms | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; + ... 2 --filter-volume-name='volume1' OK: Volume 'svm1:volume1' state: online, space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%), logical space usage total: 3.20 TB used: 2.88 TB (90.00%) free: 325.03 GB (10.00%), read iops: 200, write iops: 100, other iops: 100, total iops: 1000, read latency: 0.2 ms, write latency: 0.1 ms, other latency: 0.1 ms, total latency: 1 ms | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.logicalspace.usage.bytes'=3169438617600B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.free.bytes'=348998594560B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.usage.percentage'=90.00%;;;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; + ... 3 --filter-name='volume1' OK: Volume 'svm1:volume1' state: online, space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%), logical-usage : skipped (no value(s)), logical-usage-free : skipped (no value(s)), logical-usage-prct : skipped (no value(s)), read iops: 200, write iops: 100, other iops: 100, total iops: 1000, read latency: 0.2 ms, write latency: 0.1 ms, other latency: 0.1 ms, total latency: 1 ms | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; + ... 4 --warning-status='\\\%{state} !~ /notonline/i' WARNING: Volume 'svm1:volume1' state: online | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; + ... 5 --critical-status='\\\%{state} !~ /notonline/i' CRITICAL: Volume 'svm1:volume1' state: online | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; + ... 6 --warning-usage-prct=50 WARNING: Volume 'svm1:volume1' space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;0:50;;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; + ... 7 --critical-usage-prct=50 CRITICAL: Volume 'svm1:volume1' space usage total: 4.00 TB used: 2.82 TB (90.42%) free: 392.42 GB (9.58%) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;0:50;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; + ... 8 --filter-volume-name='volume1' --warning-logical-usage-prct=50 WARNING: Volume 'svm1:volume1' logical space usage total: 3.20 TB used: 2.88 TB (90.00%) free: 325.03 GB (10.00%) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.logicalspace.usage.bytes'=3169438617600B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.free.bytes'=348998594560B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.usage.percentage'=90.00%;0:50;;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; + ... 9 --filter-volume-name='volume1' --critical-logical-usage-prct=50 CRITICAL: Volume 'svm1:volume1' logical space usage total: 3.20 TB used: 2.88 TB (90.00%) free: 325.03 GB (10.00%) | 'svm1:volume1#volume.space.usage.bytes'=3097083330560B;;;0;4398046511104 'svm1:volume1#volume.space.free.bytes'=421353881600B;;;0;4398046511104 'svm1:volume1#volume.space.usage.percentage'=90.42%;;;0;100 'svm1:volume1#volume.logicalspace.usage.bytes'=3169438617600B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.free.bytes'=348998594560B;;;0;3518437212160 'svm1:volume1#volume.logicalspace.usage.percentage'=90.00%;;0:50;0;100 'svm1:volume1#volume.io.read.usage.bytespersecond'=200B/s;;;; 'svm1:volume1#volume.io.write.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.other.usage.bytespersecond'=100B/s;;;0; 'svm1:volume1#volume.io.total.usage.bytespersecond'=1000B/s;;;0; 'svm1:volume1#volume.io.read.usage.iops'=200iops;;;0; 'svm1:volume1#volume.io.write.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.other.usage.iops'=100iops;;;0; 'svm1:volume1#volume.io.total.usage.iops'=1000iops;;;0; 'svm1:volume1#volume.io.read.latency.milliseconds'=0.2ms;;;0; 'svm1:volume1#volume.io.write.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.other.latency.milliseconds'=0.1ms;;;0; 'svm1:volume1#volume.io.total.latency.milliseconds'=1ms;;;0; diff --git a/tests/storage/purestorage/flasharray/v2/restapi/alerts.robot b/tests/storage/purestorage/flasharray/v2/restapi/alerts.robot new file mode 100644 index 000000000..8a5589e24 --- /dev/null +++ b/tests/storage/purestorage/flasharray/v2/restapi/alerts.robot @@ -0,0 +1,35 @@ +*** Settings *** + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + +** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mokoon.json + +${CMD} ${CENTREON_PLUGINS} +... --plugin=storage::purestorage::flasharray::v2::restapi::plugin +... --mode=alerts +... --hostname=${HOSTNAME} +... --proto='http' +... --api-version='2.4' +... --api-token='token' +... --port=${APIPORT} + +*** Test Cases *** +alerts ${tc} + [Tags] storage purestorage flasharray restapi + ${command} Catenate + ... ${CMD} + ... ${extra_options} + Ctn Verify Command Output ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} CRITICAL: 1 problem(s) detected | 'alerts.detected.count'=1;;;0; + ... 2 --filter-category='array' CRITICAL: 1 problem(s) detected | 'alerts.detected.count'=1;;;0; + ... 3 --warning-status='\\\%{component_name} eq "ct1.eth0"' --filter-category="toto" --insecure --verbose WARNING: 1 problem(s) detected | 'alerts.detected.count'=1;;;0; warning: alert [component: ct1.eth0] [severity: warning] [category: toto] [issue: failure] + ... 4 --critical-status='\\\%{component_name} eq "ch0" and \\\%{severity} =~ /critical/i' --filter-category="array" --insecure --verbose CRITICAL: 1 problem(s) detected | 'alerts.detected.count'=1;;;0; critical: alert [component: ch0] [severity: critical] [category: array] [issue: shelf drive failures(s)] + ... 5 --memory CRITICAL: 1 problem(s) detected | 'alerts.detected.count'=1;;;0; #first memory alert to be defined + ... 6 --memory OK: 0 problem(s) detected | 'alerts.detected.count'=0;;;0; #second check to ensure no new memory alert \ No newline at end of file diff --git a/tests/storage/purestorage/flasharray/v2/restapi/mokoon.json b/tests/storage/purestorage/flasharray/v2/restapi/mokoon.json new file mode 100644 index 000000000..94e6e4ac3 --- /dev/null +++ b/tests/storage/purestorage/flasharray/v2/restapi/mokoon.json @@ -0,0 +1,130 @@ +{ + "uuid": "cf22c628-8819-46d3-b1b7-fc46f3aee39b", + "lastMigration": 32, + "name": "Mokoon", + "endpointPrefix": "", + "latency": 0, + "port": 3000, + "hostname": "", + "folders": [], + "routes": [ + { + "uuid": "98036266-a85e-484f-9af8-26690151180c", + "type": "http", + "documentation": "", + "method": "post", + "endpoint": "api/2.4/login", + "responses": [ + { + "uuid": "ad6920b9-8a22-4ffc-b066-936819921ba0", + "body": "{\r\n \"continuation_token\": null,\r\n \"items\": [\r\n {\r\n \"created\": 1737462338078,\r\n \"state\": \"closed\",\r\n \"description\": \"(drive:ch0.nvb1): failure Expected: healthy, Actual: failed\",\r\n \"component_type\": \"drive\",\r\n \"name\": \"81204734\",\r\n \"id\": \"5576557655765576557655765576\",\r\n \"code\": 60,\r\n \"category\": \"array\",\r\n \"severity\": \"warning\",\r\n \"flagged\": false,\r\n \"updated\": null,\r\n \"closed\": null,\r\n \"notified\": null,\r\n \"component_name\": \"ch0.nvb1\",\r\n \"expected\": \"healthy\",\r\n \"actual\": \"failed\",\r\n \"knowledge_base_url\": \"https://support.purestorage.com/?cid=Alert_0060\",\r\n \"summary\": \"(drive:ch0.nvb1): failure\",\r\n \"issue\": \"failure\"\r\n },\r\n {\r\n \"created\": 1737464651017,\r\n \"state\": \"open\",\r\n \"description\": \"(shelf:ch0): shelf drive failures(s) Expected: 0, Actual: 1\",\r\n \"component_type\": \"shelf\",\r\n \"name\": \"81204806\",\r\n \"id\": \"f823f823f823f823f823f823f823\",\r\n \"code\": 60,\r\n \"category\": \"array\",\r\n \"severity\": \"critical\",\r\n \"flagged\": true,\r\n \"updated\": null,\r\n \"closed\": null,\r\n \"notified\": null,\r\n \"component_name\": \"ch0\",\r\n \"expected\": \"0\",\r\n \"actual\": \"1\",\r\n \"knowledge_base_url\": \"https://support.purestorage.com/?cid=Alert_0060\",\r\n \"summary\": \"(shelf:ch0): shelf drive failures(s)\",\r\n \"issue\": \"shelf drive failures(s)\"\r\n },\r\n {\r\n \"created\": 1536744300846,\r\n \"description\": \"(hardware:ct1.eth0): failure Expected: , Actual: \",\r\n \"state\": \"closed\",\r\n \"component_type\": \"hardware\",\r\n \"name\": \"10088780\",\r\n \"id\": \"18525aa28bee4eb3a68eb901c1483fea\",\r\n \"category\": \"array\",\r\n \"severity\": \"warning\",\r\n \"code\": 42,\r\n \"flagged\": false,\r\n \"updated\": null,\r\n \"closed\": null,\r\n \"notified\": null,\r\n \"component_name\": \"ct1.eth0\",\r\n \"expected\": \"\",\r\n \"actual\": \"\",\r\n \"knowledge_base_url\": \"https://support.purestorage.com/?cid=Alert_0042\",\r\n \"issue\": \"failure\",\r\n \"summary\": \"(hardware:ct1.eth0): failure\"\r\n }\r\n ],\r\n \"more_items_remaining\": false,\r\n \"total_item_count\": null\r\n}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [ + { + "key": "x-auth-token", + "value": "token" + } + ], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + }, + { + "uuid": "5c108f96-531d-43e3-b7cc-38cf5aa5dca9", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/2.4/alerts", + "responses": [ + { + "uuid": "31a6a6d7-7c12-4269-9783-14c6e42be22e", + "body": "{\r\n \"continuation_token\": null,\r\n \"items\": [\r\n {\r\n \"created\": 1737462338078,\r\n \"state\": \"closed\",\r\n \"description\": \"(drive:ch0.nvb1): failure Expected: healthy, Actual: failed\",\r\n \"component_type\": \"drive\",\r\n \"name\": \"81204734\",\r\n \"id\": \"5576557655765576557655765576\",\r\n \"code\": 60,\r\n \"category\": \"array\",\r\n \"severity\": \"warning\",\r\n \"flagged\": false,\r\n \"updated\": null,\r\n \"closed\": null,\r\n \"notified\": null,\r\n \"component_name\": \"ch0.nvb1\",\r\n \"expected\": \"healthy\",\r\n \"actual\": \"failed\",\r\n \"knowledge_base_url\": \"https://support.purestorage.com/?cid=Alert_0060\",\r\n \"summary\": \"(drive:ch0.nvb1): failure\",\r\n \"issue\": \"failure\"\r\n },\r\n {\r\n \"created\": 1737464651017,\r\n \"state\": \"open\",\r\n \"description\": \"(shelf:ch0): shelf drive failures(s) Expected: 0, Actual: 1\",\r\n \"component_type\": \"shelf\",\r\n \"name\": \"81204806\",\r\n \"id\": \"f823f823f823f823f823f823f823\",\r\n \"code\": 60,\r\n \"category\": \"array\",\r\n \"severity\": \"critical\",\r\n \"flagged\": true,\r\n \"updated\": null,\r\n \"closed\": null,\r\n \"notified\": null,\r\n \"component_name\": \"ch0\",\r\n \"expected\": \"0\",\r\n \"actual\": \"1\",\r\n \"knowledge_base_url\": \"https://support.purestorage.com/?cid=Alert_0060\",\r\n \"summary\": \"(shelf:ch0): shelf drive failures(s)\",\r\n \"issue\": \"shelf drive failures(s)\"\r\n },\r\n {\r\n \"created\": 1536744300846,\r\n \"description\": \"(hardware:ct1.eth0): failure Expected: , Actual: \",\r\n \"state\": \"closed\",\r\n \"component_type\": \"hardware\",\r\n \"name\": \"10088780\",\r\n \"id\": \"18525aa28bee4eb3a68eb901c1483fea\",\r\n \"category\": \"toto\",\r\n \"severity\": \"warning\",\r\n \"code\": 42,\r\n \"flagged\": false,\r\n \"updated\": null,\r\n \"closed\": null,\r\n \"notified\": null,\r\n \"component_name\": \"ct1.eth0\",\r\n \"expected\": \"\",\r\n \"actual\": \"\",\r\n \"knowledge_base_url\": \"https://support.purestorage.com/?cid=Alert_0042\",\r\n \"issue\": \"failure\",\r\n \"summary\": \"(hardware:ct1.eth0): failure\"\r\n }\r\n ],\r\n \"more_items_remaining\": false,\r\n \"total_item_count\": null\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 + } + ], + "rootChildren": [ + { + "type": "route", + "uuid": "98036266-a85e-484f-9af8-26690151180c" + }, + { + "type": "route", + "uuid": "5c108f96-531d-43e3-b7cc-38cf5aa5dca9" + } + ], + "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": [] +} \ No newline at end of file