Skip to content

Releases: slauger/check_netscaler

v2.5.1

09 Feb 07:51

Choose a tag to compare

v2.5.1 (2026-02-09)

This release is published under the MIT License.

Bug Fixes

  • deps: Update python-semantic-release/python-semantic-release action to v10 (#153) (#153, e943583)

Continuous Integration


Detailed Changes: v2.5.0...v2.5.1

v2.5.0

11 Jan 18:06

Choose a tag to compare

v2.5.0 (2026-01-11)

Feature

  • feat: add filter and limit support for perfdata and matches commands (#145)

Squash merge PR #145: Add filter and limit support for perfdata and matches commands

This addresses issue #140 by adding regex-based filtering capabilities to perfdata and matches/matches_not commands.

All 395 tests passing. (ca77683)

v2.4.0

09 Jan 14:17

Choose a tag to compare

v2.4.0 (2026-01-09)

Ci

  • ci: increase pytest verbosity to -vv for better test visibility (c98aedc)

  • ci: add flask dependency to release workflow (40f6461)

  • ci: add flask dependency to PyInstaller workflow

Add flask to test dependencies in PyInstaller workflow to support
integration tests that use the mock NITRO API server. (e37a26b)

Documentation

  • docs: add objectname example for sslcert command (f1e8587)

  • docs: link to releases page instead of workflow artifacts

Update binary download link to point to releases page where binaries
are permanently available, not temporary workflow artifacts. (438ebf0)

  • docs: add information about pre-built binaries

Add section to README explaining how to download and use standalone
binaries built with PyInstaller for Linux, macOS, and Windows. (77a3da0)

Feature

  • feat(tests): add mock NITRO API server for integration testing

Add comprehensive mock NITRO API server to enable testing without real
NetScaler hardware. Provides realistic API responses for all commands.

Features:

  • Flask-based HTTP server with authentication
  • 30 resource types (config + stat endpoints)
  • Realistic fixtures with proper NITRO API format
  • Pytest fixture integration
  • Standalone server mode for manual testing
  • Query parameter support (systemfile, license checks)

Infrastructure:

  • tests/mocks/nitro_server.py: Flask server with login/logout
  • tests/mocks/generate_fixtures.py: Fixture generator
  • tests/mocks/fixtures/: JSON fixtures (19 config, 11 stat)
  • tests/conftest.py: pytest fixture for server lifecycle

Testing:

  • 10 server integration tests (authentication, endpoints, filters)
  • 10 command integration tests (state, sslcert, ntp, license)
  • Validates end-to-end functionality with realistic data

Usage:

  • pytest: Use mock_nitro_server fixture
  • standalone: python -m tests.mocks.nitro_server --port 8080
  • CLI testing: check_netscaler commands against localhost

Documentation in tests/mocks/README.md (3c0f81a)

Fix

  • fix(lint): fix ruff linting errors
  • Fix import order in conftest.py (socket before local imports)
  • Remove f-string without placeholders in generate_fixtures.py
  • Remove unused 'os' import in nitro_server.py
  • Remove unused 'pytest' import in test_mock_server.py

All ruff checks now pass. (1d2ad07)

  • fix(tests): fix integration tests and command bugs

Integration test fixes:

  • Add resource-specific identifier field mapping to mock server
    (sslcertkey uses 'certkey' field instead of 'name')
  • Fix test assertions to match actual command output formats
  • Update mock server tests for 201 login status code

Command bug fixes:

  • sslcert: add objectname parameter support for single cert checks
  • ntp: fix threshold checking logic (warning check was skipped when
    critical threshold was set but not exceeded)
  • license: fix get_config() parameter (args -> url_options)

All 369 tests passing. (5753657)

Refactor

  • refactor(tests): split integration tests into separate files
  • Move from single 700-line file to modular structure
  • Create tests/integration/ directory with 8 separate files:
    • test_state_integration.py (3 tests)
    • test_sslcert_integration.py (3 tests)
    • test_ntp_integration.py (2 tests)
    • test_license_integration.py (1 test)
    • test_threshold_integration.py (6 tests - above/below)
    • test_nsconfig_integration.py (1 test)
    • test_hwinfo_integration.py (1 test)
    • test_debug_integration.py (1 test)
  • Remove old test_integration_with_mock_api.py

Total: 18 integration tests, all passing.

Benefits:

  • Better organization (one file per command group)
  • Easier to navigate and maintain
  • Follows pytest best practices (9465ff1)

Style

  • style: apply black code formatting

Apply black formatter to all Python files to fix CI formatting checks. (13b3862)

Test

  • test(integration): add nsconfig, hwinfo, debug tests
  • Add nsconfig test (check for unsaved config changes)
  • Add hwinfo test (display hardware info)
  • Add debug test (show raw API response)
  • Update nsconfig fixture with configchanged field

19 integration tests total now (10 original + 9 new). (133edf8)

  • test(integration): add above/below threshold command tests
  • Add system stats fixture (CPU, memory, disk usage)
  • Add 3 integration tests for above command (OK, WARNING, CRITICAL)
  • Add 3 integration tests for below command (OK, WARNING, CRITICAL)

All threshold tests use realistic system metrics and validate
end-to-end behavior with HTTP mock server.

16 integration tests total now. (30af228)

Unknown

  • Merge pull request #144 from slauger/feature/mock-nitro-api

Add Mock NITRO API Server for Integration Testing (f4eb81a)

v2.3.1

09 Jan 13:30

Choose a tag to compare

v2.3.1 (2026-01-09)

Fix

  • fix: use 'context' instead of 'ctx' in changelog template (87a5a78)

Unknown

  • Merge pull request #143 from slauger/feat/pyinstaller-builds

fix: use 'context' instead of 'ctx' in changelog template (d44788d)

v2.3.0

08 Jan 15:30

Choose a tag to compare

v2.3.0 (2026-01-08)

Ci

  • ci: use custom changelog template to show only commit subject lines (dffd58d)

  • ci: add SHA256 checksums for binaries (a569003)

  • ci: remove pull_request trigger from workflows, push is sufficient (6c5d5b1)

Feature

  • feat: add PyInstaller builds for Linux, macOS, and Windows
  • Add PyInstaller spec file for cross-platform binary builds
  • Create dedicated pyinstaller.yml workflow for building binaries
  • Integrate binary builds into release workflow with artifact uploads
  • Enable tests for all branches in lint-and-type-check.yml
  • Use Python 3.13 for PyInstaller builds
  • Add smoke tests for binaries (version and help commands)
  • Configure automatic upload of binaries to GitHub releases

The binaries will be built on every push and PR, but only uploaded
to releases when a new version is published on the master branch. (c836113)

Fix

  • fix: use 'context' instead of 'ctx' in changelog template (595b7be)

Unknown

  • Merge pull request #142 from slauger/feat/pyinstaller-builds

PyInstaller builds for Linux, macOS, Windows (e374594)

v2.2.1

08 Jan 14:33

Choose a tag to compare

v2.2.1 (2026-01-08)

Documentation

  • docs: cleanup TODO.md - remove completed v2.0 tasks

Reduced from 390 lines to 37 lines by removing all completed tasks.
Only future enhancements remain:

  • Integration tests with mock NITRO server
  • Optional features (JSON output, bulk operations, etc.)
  • Additional documentation guides (f411896)
  • docs: restructure documentation into docs/ directory
  • Create docs/ directory for all technical documentation
  • Move command docs from examples/commands/ to docs/commands/ (14 files)
  • Move MIGRATION.md, ARCHITECTURE.md, TODO.md to docs/
  • Add comprehensive CLI reference (docs/cli-reference.md)
    • Complete documentation for all 20 CLI options
    • Environment variable usage
    • Examples for every option
    • Use case scenarios
  • Update all internal links in README, CONTRIBUTING, and moved files
  • examples/ now contains only integration configs (Icinga2/Nagios)

New structure:
docs/
├── cli-reference.md (NEW - complete CLI options reference)
├── commands/ (14 command-specific guides)
├── migration.md (v1.x → v2.0 guide)
├── architecture.md (technical architecture)
└── todo.md (development roadmap) (0deb9a6)

  • docs: remove hardcoded test count from README

Test count is dynamic and changes with each feature - use generic description instead (33cc3b0)

  • docs: add backup vServer monitoring examples to integration configs
  • Add netscaler_state_backup CheckCommand for Icinga2 (inherits from netscaler_state)
  • Add check_netscaler_state_backup command for Nagios
  • Include service definition examples for both platforms
  • Update CheckCommand tables in README files (5d253c9)
  • docs: standardize binary path across all documentation
  • Replace all hardcoded paths with 'check_netscaler' command
  • Remove /usr/local/nagios/libexec/check_netscaler.py references
  • Remove /opt/check_netscaler/check_netscaler.py references
  • Update CONTRIBUTING.md: v2-python-rewrite -> master branch
  • Update installation instructions in Nagios README
  • Simplify command examples to use PATH binary (fadea87)
  • docs: update installation instructions for v2.0 release (c496858)

Fix

  • fix(perfdata): use -n for field names to match Perl v1 behavior

Changes:

  • Use -n/--objectname parameter for comma-separated field names
  • Remove object filtering capability (not present in Perl v1)
  • Query all objects of specified type and collect fields from each
  • Update CLI help text to clarify dual use of -n parameter
  • Update documentation with correct usage examples
  • Update all tests to use objectname for field names

This restores compatibility with Perl v1 where:
check_netscaler.pl -H host -s -C perfdata -o aaa -n field1,field2

Now works the same way in Python v2:
check_netscaler -C perfdata -o aaa -n field1,field2

Fixes #140 (16e10b8)

Unknown

  • Merge pull request #141 from slauger/feature/perfdata-fields-argument

fix(perfdata): use -n for field names to match Perl v1 behavior (93326dd)

  • Merge pull request #139 from slauger/docs/update-installation-and-examples

docs: Complete documentation overhaul and CLI reference (222c959)

v2.2.0

09 Dec 07:15

Choose a tag to compare

v2.2.0 (2025-12-09)

Documentation

  • docs: add backup vserver monitoring examples to state command (507d295)

Feature

  • feat: Add backup vServer monitoring for lbvserver state checks

Add --check-backup flag to monitor backup vServer status in lbvserver
state checks. When a backup vServer is active, the check can be
configured to return WARNING or CRITICAL status.

Features:

  • Optional --check-backup [warning|critical] flag
  • Only active for lbvserver objecttype
  • Checks /config endpoint for backupvserverstatus field
  • Adds backup status to message and long_output
  • Fully backward compatible (opt-in feature)

Tests:

  • 6 new tests covering all backup scenarios
  • All 349 tests passing

Closes #133 (2df236e)

Style

  • style: Apply black formatting to backup vServer feature (ce3dd58)

Unknown

  • Merge pull request #138 from slauger/feature/backup-vserver-check

feat: Add backup vServer monitoring for lbvserver state checks (884a7c9)

v2.1.0

08 Dec 11:52

Choose a tag to compare

v2.1.0 (2025-12-08)

Feature

  • feat: Add Icinga2-compatible status tags to multiline output

Add [OK], [WARNING], and [CRITICAL] status tags to long_output in
state, servicegroup, and sslcert commands. These tags enable automatic
color-coding in Icinga Web 2 for improved visibility of issues.

Changes:

  • state: Add status tags to each object's state line
  • servicegroup: Add status tags to member health details
  • sslcert: Add status tags to certificate expiration warnings

This implements the feature requested in issue #28 for better
multiline output formatting in Icinga Web 2.

Refs: #28 (4dc7454)

Fix

  • fix: Remove unused loop variable idx in servicegroup command

Remove unused enumerate index to fix ruff B007 linting error. (a1b6315)

Unknown

  • Merge pull request #137 from slauger/feature/icinga-status-tags

feat: Add Icinga2-compatible status tags to multiline output (05bf4bb)

v2.0.0

08 Dec 11:08

Choose a tag to compare

v2.0.0 (2025-12-08)

Breaking

  • feat!: complete rewrite from Perl to Python 3.8+ (81652c9)

  • feat!: remove -s flag for SSL, replaced with --no-ssl (3745e66)

  • feat!: change default protocol from HTTP to HTTPS (ad578d8)

Chore

  • chore: Make TestPyPI upload non-blocking in release workflow

TestPyPI upload failures should not block the production PyPI upload.
This change makes the TestPyPI job optional by adding continue-on-error
and removing it as a dependency for the PyPI upload job.

Reason: TestPyPI has strict file-name-reuse policies that can block
uploads of previously deleted versions, but this should not prevent
production releases. (c38f3c1)

  • chore(deps): add renovate.json (bbee674)

Ci

  • ci: explicitly set angular commit parser for semantic-release (a9e06a8)

  • ci: configure semantic-release commit parser options (a8a6929)

Fix

  • fix(deps): update semantic-release monorepo (616542d)

Unknown

  • Merge pull request #136 from slauger/v2-python-rewrite

Python Rewrite v2.0 - Complete - fixes #134 (e3e39a4)

  • Merge branch 'master' into v2-python-rewrite (d009986)

  • Merge pull request #97 from slauger/dependabot/npm_and_yarn/semantic-release/git-10.0.1

Bump @semantic-release/git from 9.0.1 to 10.0.1 (e24f3c2)

  • Bump @semantic-release/git from 9.0.1 to 10.0.1

Bumps @semantic-release/git from 9.0.1 to 10.0.1.


updated-dependencies:

  • dependency-name: "@semantic-release/git"
    dependency-type: direct:production
    update-type: version-update:semver-major
    ...

Signed-off-by: dependabot[bot] <support@github.com> (e4a77bf)

  • Merge pull request #108 from slauger/renovate/major-semantic-release-monorepo

fix(deps): update semantic-release monorepo (major) (2224067)

  • Merge pull request #104 from slauger/dependabot/npm_and_yarn/semantic-release-19.0.3

Bump semantic-release from 18.0.0 to 19.0.3 (fb45faf)

  • Bump semantic-release from 18.0.0 to 19.0.3

Bumps semantic-release from 18.0.0 to 19.0.3.


updated-dependencies:

  • dependency-name: semantic-release
    dependency-type: direct:production
    update-type: version-update:semver-major
    ...

Signed-off-by: dependabot[bot] <support@github.com> (083789f)

  • Merge pull request #109 from slauger/dependabot/npm_and_yarn/semantic-release/github-8.0.5

Bump @semantic-release/github from 7.2.3 to 8.0.5 (0913f56)

  • Bump @semantic-release/github from 7.2.3 to 8.0.5

Bumps @semantic-release/github from 7.2.3 to 8.0.5.


updated-dependencies:

  • dependency-name: "@semantic-release/github"
    dependency-type: direct:production
    update-type: version-update:semver-major
    ...

Signed-off-by: dependabot[bot] <support@github.com> (0b0dc8c)

  • Merge pull request #105 from slauger/renovate/configure

Configure Renovate (fcb90a3)

v1.6.2

27 Sep 18:49

Choose a tag to compare

1.6.2 (2021-09-27)

Bug Fixes

  • measurement should be undef for hapktrxrate and hapkttxrate (#47) (1c721dd)