python-netgear-switch-library 0.0.post336__tar.gz → 0.0.post337__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/PKG-INFO +1 -1
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/_version.py +2 -2
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/models.py +32 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/snmp/oids.py +32 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/snmp/parse.py +66 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/snmp_read.py +31 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/.github/workflows/ci.yml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/.github/workflows/deb.yml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/.github/workflows/publish-pypi.yml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/.gitignore +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/.readthedocs.yaml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/CLAUDE.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/LICENSE +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/README.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/RELEASING.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/debian/changelog +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/debian/control +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/debian/copyright +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/debian/rules +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/debian/source/format +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/Makefile +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_ext/filelinks.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_ext/support_tables.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/models/gs105pe.png +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/models/gs110emx.png +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/models/gs305ep.png +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/models/gs728tpp.png +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/models/gsm7228ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/models/gsm7252ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/models/m4300-16x.png +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/models/m4300-24x.png +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/_static/ngsw.css +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/core.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/facades.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/index.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/operations.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/protocols.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/transport.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/api/virtual.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/conf.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/development.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/fake/index.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/fake/internals.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/fake/serving.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/fake/testing.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/guide/concepts.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/guide/configuration.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/guide/installation.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/guide/principles.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/guide/quickstart.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/guide/reading.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/guide/writing.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/index.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/gs105pe.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/gs110emx.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/gs305ep.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/gs728tpp.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/gsm7228ps.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/gsm7252ps.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/index.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/m4300-16x.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/m4300-24x.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/models/support.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/http/cheetah-form.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/http/cheetah-v1.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/http/gambit.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/http/merge-hash-cgi.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/http/xml-api.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/http.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/index.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/nsdp.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/protocols/snmp.rst +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-15-foundation.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-17-slice-02-snmp-read-core.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-17-slice-03-read-apis.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-18-slice-04-snmp-write.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-18-slice-05-nsdp.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-18-slice-06-http.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-18-slice-07-cli.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-18-slice-08-packaging-ci.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/plans/2026-07-23-gsm7252ps-http-xe-dialect.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/specs/2026-07-15-netgear-control-library-design.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/specs/2026-07-23-gsm7252ps-http-xe-dialect-design.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/superpowers/specs/2026-08-02-snmp-surface-findings.md +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/packaging/apt-index.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/packaging/ci-build.sh +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/packaging/deb-version.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/pyproject.toml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/aio_api.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/capabilities.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli/capture.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli/context.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli/format.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli/main.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli/resolve.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli/safety.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli_read.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/config.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/errors.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/http_read.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/http_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/mcp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/mcp/server.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/cli/commands.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/cli/parse.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/http/crypt.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/http/endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/http/forms.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/http/parse.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/http/session.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/http/types.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/nsdp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/nsdp/auth.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/nsdp/client.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/nsdp/parsers.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/nsdp/protocol.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/nsdp/types.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/nsdp/write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/snmp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/snmp/client.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/protocols/snmp/write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/py.typed +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/registry.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/sync_api.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/aio/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/aio/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/aio/snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/cli/console.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/cli/session.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/cli/ssh.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/cli/telnet.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/http/client.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/sync/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/sync/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/transport/sync/snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/cli_fastpath.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/faces/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/faces/cli.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/faces/http.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/faces/mibview.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/faces/nsdp.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/faces/snmp.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/seed.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/server.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/state.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_fastpath_vlan.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_fastpath_xui.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_gs105pe.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_gs110emx.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_gs110emx_templates.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_gs728tpp.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_gsm7228ps.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_gsm7252ps.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/src/netgear_switch/virtual/web_m4300.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/capture_parity.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_capture.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_cli_integration.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_control_poe_port.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_control_vlan_ip.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_format.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_main_framework.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_new_commands.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_op_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_prompt_wiring.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_read_commands.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_resolve.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_safety.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/cli/test_serve.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/conftest.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/captures/gsm7228ps.json +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/captures/gsm7252ps.json +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/captures/m4300-16x.json +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/captures/m4300-24x.json +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_lldp.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_mac_table.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_network.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_poe.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7228ps_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_network.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/gsm7252ps_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_vlan_1.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_vlan_4.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_16x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/cli/m4300_24x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs105pe_membership.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs105pe_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs105pe_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs105pe_status.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs105pe_switch_info.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs105pe_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs110emx_cf8021q.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs110emx_interface_stats.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs110emx_login.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs110emx_port_settings.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs110emx_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs110emx_redirect.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs110emx_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs110emx_vlanmembership.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs305ep_dashboard.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs305ep_login.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs305ep_membership.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs305ep_poestatus.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs305ep_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs305ep_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs305ep_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_device_info_and_sensors.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_lldp.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_macs.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_mgmt_ip.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_poe.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_ports.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_pvids_membership.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_vlan_membership_per_vlan.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gs728tpp_vlans.xml +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_vlanPortCfg_vlan5.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7228ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_login.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan141.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/gsm7252ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_16x_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_16x_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_16x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_16x_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_16x_vlanportcfg_vlan4.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_24x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_addresstable.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_ports.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_vlanportcfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/http/m4300_vlanstatus.html +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/snmp/gsm7252ps_fans.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/snmp/gsm7252ps_ifhighspeed.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/snmp/gsm7252ps_ifoperstatus.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/fixtures/snmp/gsm7252ps_psu.txt +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/http_specs.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/cli/test_cli_parse.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/http/test_crypt.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/http/test_endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/http/test_forms.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/http/test_parse.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/nsdp/test_auth.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/nsdp/test_parsers.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/nsdp/test_protocol.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/nsdp/test_write_frame.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_client.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_oids.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_parse_lldp_macs.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_parse_mgmt_ip.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_parse_poe_sensors.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_parse_ports.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_parse_system_info.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_parse_vlans.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/protocols/snmp/test_write_encode.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_aio_api.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_capabilities.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_cli_read.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_cli_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_config.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_cross_backend_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_deb_version.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_docs_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_errors.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_facade_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_http_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_http_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_http_read.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_http_vlan_membership.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_http_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_http_xui_writes.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_import.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_mcp_server.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_models.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_models_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_nsdp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_public_api.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_quality_gates.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_registry.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_snmp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_sync_api.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_version.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/test_write_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/_fastpath_fake.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_cli_console.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_cli_scp_cert.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_cli_telnet.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_http_client.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_nsdp_udp_sync.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_set_transport.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/transport/test_value_parity.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_cli_cross_backend.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_cli_gsm7228ps_parity.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_gsm7228ps_seed.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_hostname.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_m4300_seeds.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_mibview.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_mutable_state.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_nsdp_state.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_serve_daemon.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_snmp_write_face.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_state_seed.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_switchport_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_virtual_http_face.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_virtual_nsdp_face.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_virtual_snmp_face.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/tests/virtual/test_web_projection.py +0 -0
- {python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/uv.lock +0 -0
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-netgear-switch-library
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.post337
|
|
4
4
|
Summary: Python library and CLI to query and control Netgear switches over SNMP, NSDP and HTTP.
|
|
5
5
|
Author-email: Tim Ansell <me@mith.ro>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 0, '
|
|
21
|
+
__version__ = version = '0.0.post337'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 'post337')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -119,6 +119,38 @@ class MgmtIpConfig:
|
|
|
119
119
|
base_mac: str | None = None
|
|
120
120
|
|
|
121
121
|
|
|
122
|
+
@dataclass(frozen=True)
|
|
123
|
+
class SyslogServer:
|
|
124
|
+
"""One remote syslog collector the switch is configured to send to."""
|
|
125
|
+
|
|
126
|
+
host: str
|
|
127
|
+
port: int
|
|
128
|
+
#: Standard syslog severity, 0 (emergency) to 7 (debug). The switch sends
|
|
129
|
+
#: messages AT OR ABOVE this level. Cross-checked on m4300-24x: the SNMP
|
|
130
|
+
#: column reads 6 where ``show logging hosts`` prints "info".
|
|
131
|
+
severity: int
|
|
132
|
+
#: The switch's own word for the row's state, "Active" in the CLI table.
|
|
133
|
+
active: bool
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
@dataclass(frozen=True)
|
|
137
|
+
class SyslogConfig:
|
|
138
|
+
"""Remote-logging configuration: whether it is on, and where it sends.
|
|
139
|
+
|
|
140
|
+
Deliberately narrower than everything ``show logging`` prints. The console
|
|
141
|
+
and buffered-logging columns are in the same vendor subtree, but only the
|
|
142
|
+
console pair could be decoded against captured CLI output; the buffered
|
|
143
|
+
severity did not match any column read, so it is left out rather than
|
|
144
|
+
guessed at. See ``VendorOids.syslog_*``.
|
|
145
|
+
"""
|
|
146
|
+
|
|
147
|
+
enabled: bool
|
|
148
|
+
#: The source port the switch sends FROM (``Logging Client Local Port``),
|
|
149
|
+
#: not the collector's port -- that is per-server in ``servers``.
|
|
150
|
+
local_port: int
|
|
151
|
+
servers: tuple[SyslogServer, ...]
|
|
152
|
+
|
|
153
|
+
|
|
122
154
|
@dataclass(frozen=True)
|
|
123
155
|
class DetectedModel:
|
|
124
156
|
"""Result of identifying a switch's model over SNMP (sysObjectID + sysDescr).
|
|
@@ -147,6 +147,32 @@ class VendorOids:
|
|
|
147
147
|
"""The ONE symbol every call site uses for the DHCP-mode OID. See
|
|
148
148
|
DHCP_MODE_OID_SUFFIX above — UNVERIFIED, best-effort read only. No call site
|
|
149
149
|
may hard-code a ``.99.1`` literal; they all reference this field."""
|
|
150
|
+
syslog_admin_mode: str
|
|
151
|
+
syslog_local_port: str
|
|
152
|
+
syslog_host_addr: str
|
|
153
|
+
syslog_host_port: str
|
|
154
|
+
syslog_host_severity: str
|
|
155
|
+
syslog_host_status: str
|
|
156
|
+
"""Remote-logging configuration, under ``<base>.14`` on BOTH vendor
|
|
157
|
+
families -- 4526.10 (FASTPATH) and 4526.11 (S3300) share the column layout.
|
|
158
|
+
|
|
159
|
+
Located 2026-08-02 by reading each switch's own ``show logging`` /
|
|
160
|
+
``show logging hosts`` and then searching a full walk for those values;
|
|
161
|
+
every field of the CLI output is accounted for by a column and the two
|
|
162
|
+
agree. On m4300-24x (10.1.5.13) the host row reads 10.1.5.1 / port 514 /
|
|
163
|
+
severity 6 / status 1 against a CLI table of ``10.1.5.1 info 514
|
|
164
|
+
Active`` -- so severity is the standard syslog scale (6 = info) and status
|
|
165
|
+
1 = Active.
|
|
166
|
+
|
|
167
|
+
``<base>.17`` is NOT this: it looks like logging until you notice it holds
|
|
168
|
+
port 123 and the string "NTP Bits". It is SNTP, and this fleet's NTP server
|
|
169
|
+
and syslog server are the same host, which is what makes the confusion easy.
|
|
170
|
+
|
|
171
|
+
The admin-mode enum is ``1 = enabled, 2 = disabled``, confirmed twice over
|
|
172
|
+
on m4300-24x: syslog reads 1 while ``show logging`` says "Syslog Logging :
|
|
173
|
+
enabled", and the console column reads 2 while it says "Console Logging :
|
|
174
|
+
disabled". The console severity column independently reads 3 against a CLI
|
|
175
|
+
"error", matching the same syslog scale."""
|
|
150
176
|
mgmt_write_addr_unverified: str
|
|
151
177
|
mgmt_write_netmask_unverified: str
|
|
152
178
|
mgmt_write_gateway_unverified: str
|
|
@@ -236,6 +262,12 @@ def vendor_oids(model: SwitchModel) -> VendorOids:
|
|
|
236
262
|
box_psu_power=f"{base}.43.1.8.1.5",
|
|
237
263
|
box_temp=f"{base}.43.1.15.1.3",
|
|
238
264
|
dhcp_mode_unverified=f"{base}.{DHCP_MODE_OID_SUFFIX}",
|
|
265
|
+
syslog_admin_mode=f"{base}.14.1.4.1.0",
|
|
266
|
+
syslog_local_port=f"{base}.14.1.4.3.0",
|
|
267
|
+
syslog_host_addr=f"{base}.14.1.4.5.1.3",
|
|
268
|
+
syslog_host_port=f"{base}.14.1.4.5.1.4",
|
|
269
|
+
syslog_host_severity=f"{base}.14.1.4.5.1.5",
|
|
270
|
+
syslog_host_status=f"{base}.14.1.4.5.1.7",
|
|
239
271
|
mgmt_write_addr_unverified=f"{base}.98.1",
|
|
240
272
|
mgmt_write_netmask_unverified=f"{base}.98.2",
|
|
241
273
|
mgmt_write_gateway_unverified=f"{base}.98.3",
|
|
@@ -17,6 +17,8 @@ from ...models import (
|
|
|
17
17
|
PortStats,
|
|
18
18
|
PortStatus,
|
|
19
19
|
Sensor,
|
|
20
|
+
SyslogConfig,
|
|
21
|
+
SyslogServer,
|
|
20
22
|
VLANInfo,
|
|
21
23
|
)
|
|
22
24
|
from .client import SnmpError, SnmpRow
|
|
@@ -716,6 +718,70 @@ def _ipv4_from_rfc4293_index(rows: Sequence[SnmpRow]) -> str | None:
|
|
|
716
718
|
return None
|
|
717
719
|
|
|
718
720
|
|
|
721
|
+
#: The vendor admin-mode enum shared by every logging destination column.
|
|
722
|
+
#: 1 = enabled, 2 = disabled -- confirmed twice on m4300-24x against its own
|
|
723
|
+
#: ``show logging``: syslog reads 1 under "Syslog Logging : enabled" and the
|
|
724
|
+
#: console column reads 2 under "Console Logging : disabled".
|
|
725
|
+
_ADMIN_ENABLED = 1
|
|
726
|
+
|
|
727
|
+
#: Row status in the syslog host table. 1 is what the CLI prints as "Active".
|
|
728
|
+
_HOST_STATUS_ACTIVE = 1
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
def _first_int(rows: Sequence[SnmpRow]) -> int | None:
|
|
732
|
+
"""The value of a single-varbind scalar GET, when it is an integer."""
|
|
733
|
+
for row in rows:
|
|
734
|
+
if isinstance(row.value, int):
|
|
735
|
+
return row.value
|
|
736
|
+
return None
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
def parse_syslog(
|
|
740
|
+
admin_mode: Sequence[SnmpRow],
|
|
741
|
+
local_port: Sequence[SnmpRow],
|
|
742
|
+
host_addr: Sequence[SnmpRow],
|
|
743
|
+
host_port: Sequence[SnmpRow],
|
|
744
|
+
host_severity: Sequence[SnmpRow],
|
|
745
|
+
host_status: Sequence[SnmpRow],
|
|
746
|
+
*,
|
|
747
|
+
addr_base: str,
|
|
748
|
+
port_base: str,
|
|
749
|
+
severity_base: str,
|
|
750
|
+
status_base: str,
|
|
751
|
+
) -> SyslogConfig:
|
|
752
|
+
"""Vendor logging columns -> ``SyslogConfig``.
|
|
753
|
+
|
|
754
|
+
The host table is indexed by an integer row id, and every per-host column is
|
|
755
|
+
matched to the address column by that index rather than by position -- so a
|
|
756
|
+
table with a gap in its indices (a deleted row) cannot silently shift one
|
|
757
|
+
row's port onto another row's address.
|
|
758
|
+
|
|
759
|
+
A row whose address is empty is skipped. The address is the only field that
|
|
760
|
+
makes a row meaningful, and reporting one collector fewer is far better than
|
|
761
|
+
inventing where logs are being sent.
|
|
762
|
+
"""
|
|
763
|
+
addresses = index_str_column(host_addr, addr_base)
|
|
764
|
+
ports = index_int_column(host_port, port_base)
|
|
765
|
+
severities = index_int_column(host_severity, severity_base)
|
|
766
|
+
statuses = index_int_column(host_status, status_base)
|
|
767
|
+
|
|
768
|
+
servers = tuple(
|
|
769
|
+
SyslogServer(
|
|
770
|
+
host=address,
|
|
771
|
+
port=ports.get(index, 0),
|
|
772
|
+
severity=severities.get(index, 0),
|
|
773
|
+
active=statuses.get(index) == _HOST_STATUS_ACTIVE,
|
|
774
|
+
)
|
|
775
|
+
for index, address in sorted(addresses.items())
|
|
776
|
+
if address.strip()
|
|
777
|
+
)
|
|
778
|
+
return SyslogConfig(
|
|
779
|
+
enabled=_first_int(admin_mode) == _ADMIN_ENABLED,
|
|
780
|
+
local_port=_first_int(local_port) or 0,
|
|
781
|
+
servers=servers,
|
|
782
|
+
)
|
|
783
|
+
|
|
784
|
+
|
|
719
785
|
def parse_mgmt_ip(
|
|
720
786
|
addr: Sequence[SnmpRow],
|
|
721
787
|
netmask: Sequence[SnmpRow],
|
|
@@ -23,6 +23,7 @@ if TYPE_CHECKING:
|
|
|
23
23
|
PortStats,
|
|
24
24
|
PortStatus,
|
|
25
25
|
Sensor,
|
|
26
|
+
SyslogConfig,
|
|
26
27
|
VLANInfo,
|
|
27
28
|
)
|
|
28
29
|
from .protocols.snmp.client import AsyncSnmpClient, SnmpClient
|
|
@@ -201,6 +202,36 @@ class SnmpReader:
|
|
|
201
202
|
"""
|
|
202
203
|
return parse.parse_hostname(self.client.get([oids.SYS_NAME]))
|
|
203
204
|
|
|
205
|
+
def get_syslog(self) -> SyslogConfig:
|
|
206
|
+
"""Remote-logging configuration: whether it is on, and where it sends.
|
|
207
|
+
|
|
208
|
+
VENDOR columns, so a model with no Netgear subtree cannot serve this.
|
|
209
|
+
``gs728tpp`` is exactly that model -- a walk of ``1.3.6.1.4.1.4526``
|
|
210
|
+
answers ``noSuchObject`` -- and it is refused by name rather than
|
|
211
|
+
returned empty, which would read as "no collectors configured".
|
|
212
|
+
"""
|
|
213
|
+
if not oids.has_vendor_oids(self.model):
|
|
214
|
+
raise UnsupportedCapabilityError(
|
|
215
|
+
f"model {self.model.key!r} registers no Netgear vendor OID "
|
|
216
|
+
"subtree, and the logging columns are vendor-only; an empty "
|
|
217
|
+
"result here would be indistinguishable from a switch with no "
|
|
218
|
+
"syslog collectors configured"
|
|
219
|
+
)
|
|
220
|
+
vo = oids.vendor_oids(self.model)
|
|
221
|
+
w = self.client.walk
|
|
222
|
+
return parse.parse_syslog(
|
|
223
|
+
self.client.get([vo.syslog_admin_mode]),
|
|
224
|
+
self.client.get([vo.syslog_local_port]),
|
|
225
|
+
w(vo.syslog_host_addr),
|
|
226
|
+
w(vo.syslog_host_port),
|
|
227
|
+
w(vo.syslog_host_severity),
|
|
228
|
+
w(vo.syslog_host_status),
|
|
229
|
+
addr_base=vo.syslog_host_addr,
|
|
230
|
+
port_base=vo.syslog_host_port,
|
|
231
|
+
severity_base=vo.syslog_host_severity,
|
|
232
|
+
status_base=vo.syslog_host_status,
|
|
233
|
+
)
|
|
234
|
+
|
|
204
235
|
def get_system_info(self) -> DetectedModel:
|
|
205
236
|
"""Identify this switch's model via sysDescr (see ``read_system_info``).
|
|
206
237
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/CLAUDE.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/LICENSE
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/README.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/RELEASING.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/debian/rules
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/cli.rst
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/conf.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post336 → python_netgear_switch_library-0.0.post337}/docs/mcp.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|