Releases: slauger/check_netscaler
v2.5.1
v2.5.0
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
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
v2.3.0
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
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
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
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
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
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.
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
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)