python-netgear-switch-library 0.0.post339__tar.gz → 0.0.post341__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.post339 → python_netgear_switch_library-0.0.post341}/PKG-INFO +1 -1
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/_version.py +2 -2
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/aio_api.py +5 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/capabilities.py +24 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli_read.py +13 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/cli/commands.py +4 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/cli/parse.py +83 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/sync_api.py +12 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/.github/workflows/ci.yml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/.github/workflows/deb.yml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/.github/workflows/publish-pypi.yml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/.gitignore +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/.readthedocs.yaml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/CLAUDE.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/LICENSE +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/README.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/RELEASING.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/debian/changelog +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/debian/control +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/debian/copyright +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/debian/rules +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/debian/source/format +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/Makefile +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_ext/filelinks.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_ext/support_tables.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/models/gs105pe.png +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/models/gs110emx.png +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/models/gs305ep.png +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/models/gs728tpp.png +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/models/gsm7228ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/models/gsm7252ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/models/m4300-16x.png +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/models/m4300-24x.png +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/_static/ngsw.css +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/core.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/facades.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/index.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/operations.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/protocols.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/transport.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/api/virtual.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/conf.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/development.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/fake/index.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/fake/internals.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/fake/serving.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/fake/testing.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/guide/concepts.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/guide/configuration.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/guide/installation.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/guide/principles.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/guide/quickstart.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/guide/reading.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/guide/writing.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/index.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/gs105pe.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/gs110emx.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/gs305ep.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/gs728tpp.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/gsm7228ps.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/gsm7252ps.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/index.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/m4300-16x.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/m4300-24x.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/models/support.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/http/cheetah-form.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/http/cheetah-v1.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/http/gambit.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/http/merge-hash-cgi.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/http/xml-api.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/http.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/index.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/nsdp.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/protocols/snmp.rst +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-15-foundation.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-17-slice-02-snmp-read-core.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-17-slice-03-read-apis.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-18-slice-04-snmp-write.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-18-slice-05-nsdp.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-18-slice-06-http.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-18-slice-07-cli.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-18-slice-08-packaging-ci.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/plans/2026-07-23-gsm7252ps-http-xe-dialect.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/specs/2026-07-15-netgear-control-library-design.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/specs/2026-07-23-gsm7252ps-http-xe-dialect-design.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/docs/superpowers/specs/2026-08-02-snmp-surface-findings.md +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/packaging/apt-index.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/packaging/ci-build.sh +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/packaging/deb-version.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/pyproject.toml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli/capture.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli/context.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli/format.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli/main.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli/resolve.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli/safety.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/config.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/errors.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/http_read.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/http_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/mcp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/mcp/server.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/models.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/http/crypt.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/http/endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/http/forms.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/http/parse.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/http/session.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/http/types.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/nsdp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/nsdp/auth.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/nsdp/client.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/nsdp/parsers.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/nsdp/protocol.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/nsdp/types.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/nsdp/write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/snmp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/snmp/client.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/snmp/oids.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/snmp/parse.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/protocols/snmp/write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/py.typed +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/registry.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/aio/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/aio/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/aio/snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/cli/console.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/cli/session.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/cli/ssh.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/cli/telnet.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/http/client.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/sync/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/sync/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/transport/sync/snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/cli_fastpath.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/faces/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/faces/cli.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/faces/http.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/faces/mibview.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/faces/nsdp.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/faces/snmp.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/seed.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/server.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/state.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_fastpath_vlan.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_fastpath_xui.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_gs105pe.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_gs110emx.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_gs110emx_templates.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_gs728tpp.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_gsm7228ps.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_gsm7252ps.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/src/netgear_switch/virtual/web_m4300.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/capture_parity.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_capture.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_cli_integration.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_control_poe_port.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_control_vlan_ip.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_format.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_main_framework.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_new_commands.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_op_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_prompt_wiring.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_read_commands.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_resolve.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_safety.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/cli/test_serve.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/conftest.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/captures/gsm7228ps.json +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/captures/gsm7252ps.json +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/captures/m4300-16x.json +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/captures/m4300-24x.json +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_lldp.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_mac_table.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_network.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_poe.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7228ps_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_network.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/gsm7252ps_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_vlan_1.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_vlan_4.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_16x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/cli/m4300_24x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs105pe_membership.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs105pe_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs105pe_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs105pe_status.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs105pe_switch_info.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs105pe_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs110emx_cf8021q.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs110emx_interface_stats.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs110emx_login.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs110emx_port_settings.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs110emx_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs110emx_redirect.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs110emx_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs110emx_vlanmembership.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs305ep_dashboard.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs305ep_login.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs305ep_membership.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs305ep_poestatus.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs305ep_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs305ep_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs305ep_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_device_info_and_sensors.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_lldp.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_macs.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_mgmt_ip.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_poe.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_ports.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_pvids_membership.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_vlan_membership_per_vlan.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gs728tpp_vlans.xml +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_vlanPortCfg_vlan5.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7228ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_login.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan141.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/gsm7252ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_16x_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_16x_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_16x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_16x_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_16x_vlanportcfg_vlan4.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_24x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_addresstable.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_ports.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_vlanportcfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/http/m4300_vlanstatus.html +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/snmp/gsm7252ps_fans.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/snmp/gsm7252ps_ifhighspeed.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/snmp/gsm7252ps_ifoperstatus.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/fixtures/snmp/gsm7252ps_psu.txt +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/http_specs.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/cli/test_cli_parse.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/http/test_crypt.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/http/test_endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/http/test_forms.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/http/test_parse.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/nsdp/test_auth.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/nsdp/test_parsers.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/nsdp/test_protocol.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/nsdp/test_write_frame.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_client.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_oids.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_parse_lldp_macs.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_parse_mgmt_ip.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_parse_poe_sensors.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_parse_ports.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_parse_system_info.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_parse_vlans.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/protocols/snmp/test_write_encode.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_aio_api.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_capabilities.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_cli_read.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_cli_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_config.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_cross_backend_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_deb_version.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_docs_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_errors.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_facade_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_http_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_http_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_http_read.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_http_vlan_membership.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_http_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_http_xui_writes.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_import.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_mcp_server.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_models.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_models_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_nsdp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_public_api.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_quality_gates.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_registry.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_snmp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_sync_api.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_version.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/test_write_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/_fastpath_fake.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_cli_console.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_cli_scp_cert.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_cli_telnet.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_http_client.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_nsdp_udp_sync.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_set_transport.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/transport/test_value_parity.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_cli_cross_backend.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_cli_gsm7228ps_parity.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_gsm7228ps_seed.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_hostname.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_m4300_seeds.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_mibview.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_mutable_state.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_nsdp_state.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_serve_daemon.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_snmp_write_face.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_state_seed.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_switchport_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_virtual_http_face.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_virtual_nsdp_face.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_virtual_snmp_face.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/tests/virtual/test_web_projection.py +0 -0
- {python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/uv.lock +0 -0
{python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/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.post341
|
|
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.post341'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 'post341')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -95,6 +95,7 @@ if TYPE_CHECKING:
|
|
|
95
95
|
PortStats,
|
|
96
96
|
PortStatus,
|
|
97
97
|
Sensor,
|
|
98
|
+
SyslogConfig,
|
|
98
99
|
VLANInfo,
|
|
99
100
|
VlanMode,
|
|
100
101
|
)
|
|
@@ -447,6 +448,10 @@ class AsyncSwitch:
|
|
|
447
448
|
async def get_mgmt_ip(self, *, backend: Backend | None = None) -> MgmtIpConfig:
|
|
448
449
|
return await self._read(lambda r: r.get_mgmt_ip(), backend)
|
|
449
450
|
|
|
451
|
+
async def get_syslog(self, *, backend: Backend | None = None) -> SyslogConfig:
|
|
452
|
+
"""Async twin of ``SyncSwitch.get_syslog`` -- see there."""
|
|
453
|
+
return await self._read(lambda r: r.get_syslog(), backend)
|
|
454
|
+
|
|
450
455
|
async def get_hostname(self, *, backend: Backend | None = None) -> str:
|
|
451
456
|
"""Async twin of ``SyncSwitch.get_hostname`` -- see there."""
|
|
452
457
|
return await self._read(lambda r: r.get_hostname(), backend)
|
|
@@ -114,6 +114,19 @@ READ_OPERATIONS: tuple[Operation, ...] = (
|
|
|
114
114
|
Operation("get_sensors", OperationKind.READ, "Fan/PSU/temperature sensors"),
|
|
115
115
|
Operation("get_mgmt_ip", OperationKind.READ, "Management IP configuration"),
|
|
116
116
|
Operation("get_hostname", OperationKind.READ, "The switch's host name"),
|
|
117
|
+
Operation(
|
|
118
|
+
"get_syslog",
|
|
119
|
+
OperationKind.READ,
|
|
120
|
+
"Remote-logging configuration and collectors",
|
|
121
|
+
# SNMP and the CLI are the two backends that READ this today, and the
|
|
122
|
+
# two agree field-for-field on live hardware. Restricting the op here
|
|
123
|
+
# states what the LIBRARY serves; it deliberately does NOT assert that
|
|
124
|
+
# a web UI cannot show syslog. No dialect's syslog page has been
|
|
125
|
+
# located or captured yet, so HTTP is an unbuilt implementation -- a
|
|
126
|
+
# bug to fix, in this project's terms, not a device limitation. NSDP
|
|
127
|
+
# has no logging tag in the exhaustive tag sweep of a live GS110EMX.
|
|
128
|
+
backends=frozenset({Backend.SNMP}) | _CLI_BACKENDS,
|
|
129
|
+
),
|
|
117
130
|
Operation(
|
|
118
131
|
"nsdp_device",
|
|
119
132
|
OperationKind.READ,
|
|
@@ -213,6 +226,17 @@ def _snmp_support(model: SwitchModel, op: Operation) -> tuple[Support, str]:
|
|
|
213
226
|
f"model {model.key!r} registers no Netgear vendor OID subtree, and "
|
|
214
227
|
"the management-IP write columns are vendor-only",
|
|
215
228
|
)
|
|
229
|
+
if op.name == "get_syslog" and not oids.has_vendor_oids(model):
|
|
230
|
+
# Logging lives at <vendor base>.14 on both vendor families, so a model
|
|
231
|
+
# whose agent registers no 4526 subtree at all (gs728tpp -- a walk of
|
|
232
|
+
# 1.3.6.1.4.1.4526 answers noSuchObject) has nothing to read.
|
|
233
|
+
# SnmpReader.get_syslog refuses by name for the same reason: an empty
|
|
234
|
+
# result would be indistinguishable from a switch with no collectors.
|
|
235
|
+
return (
|
|
236
|
+
Support.UNSUPPORTED,
|
|
237
|
+
f"model {model.key!r} registers no Netgear vendor OID subtree, and "
|
|
238
|
+
"the logging columns are vendor-only",
|
|
239
|
+
)
|
|
216
240
|
if op.name == "get_macs" and not model.has_mac_table: # pragma: no cover
|
|
217
241
|
# Unreachable today: has_mac_table IS "has an SNMP backend". Kept so the
|
|
218
242
|
# rule tracks the property rather than assuming its current definition.
|
|
@@ -36,6 +36,7 @@ if TYPE_CHECKING:
|
|
|
36
36
|
PortStats,
|
|
37
37
|
PortStatus,
|
|
38
38
|
Sensor,
|
|
39
|
+
SyslogConfig,
|
|
39
40
|
VLANInfo,
|
|
40
41
|
)
|
|
41
42
|
from .registry import SwitchModel
|
|
@@ -103,6 +104,18 @@ class CliReader:
|
|
|
103
104
|
def get_mgmt_ip(self) -> MgmtIpConfig:
|
|
104
105
|
return parse.parse_mgmt_ip(self.session.run(self._spec.network_cmd))
|
|
105
106
|
|
|
107
|
+
def get_syslog(self) -> SyslogConfig:
|
|
108
|
+
"""Remote-logging configuration, from ``show logging`` + its host table.
|
|
109
|
+
|
|
110
|
+
Two commands because the switch splits it that way: the globals live in
|
|
111
|
+
``show logging`` and the collectors in ``show logging hosts``. The host
|
|
112
|
+
table's column set differs by firmware -- see ``parse.parse_syslog``.
|
|
113
|
+
"""
|
|
114
|
+
return parse.parse_syslog(
|
|
115
|
+
self.session.run(self._spec.logging_cmd),
|
|
116
|
+
self.session.run(self._spec.logging_hosts_cmd),
|
|
117
|
+
)
|
|
118
|
+
|
|
106
119
|
def get_hostname(self) -> str:
|
|
107
120
|
"""The switch's host name, from ``show hosts``.
|
|
108
121
|
|
|
@@ -103,6 +103,10 @@ class CliModelSpec:
|
|
|
103
103
|
# SNMP's sysName, so it is what keeps the two backends returning the same
|
|
104
104
|
# answer for the same switch.
|
|
105
105
|
hosts_cmd: str = "show hosts"
|
|
106
|
+
# Remote logging. `show syslog` does NOT exist -- all three FASTPATH
|
|
107
|
+
# switches answered "% Invalid input detected" on 2026-08-02.
|
|
108
|
+
logging_cmd: str = "show logging"
|
|
109
|
+
logging_hosts_cmd: str = "show logging hosts"
|
|
106
110
|
# Global-config directive. Quoted on the wire by the device's own
|
|
107
111
|
# running-config output ('hostname "sw-netgear-m4300-24x"').
|
|
108
112
|
hostname_config_cmd: str = "hostname {name}"
|
|
@@ -42,6 +42,8 @@ from ...models import (
|
|
|
42
42
|
PortStats,
|
|
43
43
|
PortStatus,
|
|
44
44
|
Sensor,
|
|
45
|
+
SyslogConfig,
|
|
46
|
+
SyslogServer,
|
|
45
47
|
VLANInfo,
|
|
46
48
|
)
|
|
47
49
|
|
|
@@ -606,6 +608,87 @@ def parse_environment(text: str) -> list[Sensor]:
|
|
|
606
608
|
return out
|
|
607
609
|
|
|
608
610
|
|
|
611
|
+
# ---------------------------------------------------------------------------
|
|
612
|
+
# show logging / show logging hosts -> syslog configuration
|
|
613
|
+
# ---------------------------------------------------------------------------
|
|
614
|
+
|
|
615
|
+
#: Syslog severity names as FASTPATH prints them, to the standard numbers the
|
|
616
|
+
#: SNMP columns carry. Cross-checked on m4300-24x: `show logging hosts` prints
|
|
617
|
+
#: "info" where the SNMP severity column reads 6.
|
|
618
|
+
_SEVERITY_NAMES = {
|
|
619
|
+
"emergency": 0,
|
|
620
|
+
"alert": 1,
|
|
621
|
+
"critical": 2,
|
|
622
|
+
"error": 3,
|
|
623
|
+
"warning": 4,
|
|
624
|
+
"notice": 5,
|
|
625
|
+
"info": 6,
|
|
626
|
+
"informational": 6,
|
|
627
|
+
"debug": 7,
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
def _colon_fields(text: str) -> dict[str, str]:
|
|
632
|
+
"""Parse ``Label : value`` lines, which `show logging` uses.
|
|
633
|
+
|
|
634
|
+
Distinct from ``labelled_values`` above: that reads the dotted-leader form
|
|
635
|
+
(``Label........ value``) which `show hosts` and `show network` use. The
|
|
636
|
+
logging command uses a colon instead, so it needs its own reader.
|
|
637
|
+
"""
|
|
638
|
+
out: dict[str, str] = {}
|
|
639
|
+
for line in text.splitlines():
|
|
640
|
+
if ":" not in line:
|
|
641
|
+
continue
|
|
642
|
+
label, _, value = line.partition(":")
|
|
643
|
+
label = label.strip()
|
|
644
|
+
if label:
|
|
645
|
+
out[label] = value.strip()
|
|
646
|
+
return out
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
def parse_syslog(logging_text: str, hosts_text: str) -> SyslogConfig:
|
|
650
|
+
"""``show logging`` + ``show logging hosts`` -> ``SyslogConfig``.
|
|
651
|
+
|
|
652
|
+
Captured 2026-08-02 from m4300-24x (10.1.5.13), m4300-16x (10.1.5.20) and
|
|
653
|
+
gsm7252ps (10.1.5.22)::
|
|
654
|
+
|
|
655
|
+
Syslog Logging : enabled
|
|
656
|
+
Logging Client Local Port : 514
|
|
657
|
+
|
|
658
|
+
Index IP Address/Hostname Severity Port Status Mode Auth Cert#
|
|
659
|
+
----- ------------------------ ---------- ------ --------- ----- ----- -----
|
|
660
|
+
1 10.1.5.1 info 514 Active udp
|
|
661
|
+
|
|
662
|
+
**The host table's column set differs by firmware.** The M4300s emit eight
|
|
663
|
+
columns (through ``Cert#``); the gsm7252ps emits only the first five. Both
|
|
664
|
+
are parsed by taking the first five whitespace-separated fields and ignoring
|
|
665
|
+
anything after ``Status``, so neither shape can shift a value into the wrong
|
|
666
|
+
field -- the same class of trap as the VLAN PortList width.
|
|
667
|
+
"""
|
|
668
|
+
fields = _colon_fields(logging_text)
|
|
669
|
+
enabled = fields.get("Syslog Logging", "").strip().lower() == "enabled"
|
|
670
|
+
port_text = fields.get("Logging Client Local Port", "").strip()
|
|
671
|
+
local_port = int(port_text) if port_text.isdigit() else 0
|
|
672
|
+
|
|
673
|
+
servers: list[SyslogServer] = []
|
|
674
|
+
for line in hosts_text.splitlines():
|
|
675
|
+
cells = line.split()
|
|
676
|
+
# A data row starts with the integer index; the header and the dashed
|
|
677
|
+
# rule under it do not, which is what filters them out.
|
|
678
|
+
if len(cells) < 5 or not cells[0].isdigit():
|
|
679
|
+
continue
|
|
680
|
+
_index, host, severity, port, status = cells[:5]
|
|
681
|
+
servers.append(
|
|
682
|
+
SyslogServer(
|
|
683
|
+
host=host,
|
|
684
|
+
port=int(port) if port.isdigit() else 0,
|
|
685
|
+
severity=_SEVERITY_NAMES.get(severity.lower(), 0),
|
|
686
|
+
active=status.lower() == "active",
|
|
687
|
+
)
|
|
688
|
+
)
|
|
689
|
+
return SyslogConfig(enabled=enabled, local_port=local_port, servers=tuple(servers))
|
|
690
|
+
|
|
691
|
+
|
|
609
692
|
# ---------------------------------------------------------------------------
|
|
610
693
|
# show hosts -> host name
|
|
611
694
|
# ---------------------------------------------------------------------------
|
|
@@ -157,6 +157,7 @@ if TYPE_CHECKING:
|
|
|
157
157
|
PortStats,
|
|
158
158
|
PortStatus,
|
|
159
159
|
Sensor,
|
|
160
|
+
SyslogConfig,
|
|
160
161
|
VLANInfo,
|
|
161
162
|
VlanMode,
|
|
162
163
|
)
|
|
@@ -552,6 +553,17 @@ class SyncSwitch:
|
|
|
552
553
|
def get_mgmt_ip(self, *, backend: Backend | None = None) -> MgmtIpConfig:
|
|
553
554
|
return self._read(lambda r: r.get_mgmt_ip(), backend)
|
|
554
555
|
|
|
556
|
+
def get_syslog(self, *, backend: Backend | None = None) -> SyslogConfig:
|
|
557
|
+
"""Remote-logging configuration: whether it is on, and its collectors.
|
|
558
|
+
|
|
559
|
+
Served over SNMP and the FASTPATH CLI, which agree field-for-field on
|
|
560
|
+
live hardware. ``gs728tpp`` is refused over SNMP by name: it registers
|
|
561
|
+
no Netgear vendor subtree, and the logging columns are vendor-only, so
|
|
562
|
+
an empty result would be indistinguishable from a switch with no
|
|
563
|
+
collectors configured.
|
|
564
|
+
"""
|
|
565
|
+
return self._read(lambda r: r.get_syslog(), backend)
|
|
566
|
+
|
|
555
567
|
def get_hostname(self, *, backend: Backend | None = None) -> str:
|
|
556
568
|
"""The switch's host name.
|
|
557
569
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/CLAUDE.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/LICENSE
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/README.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/RELEASING.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/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.post339 → python_netgear_switch_library-0.0.post341}/docs/cli.rst
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post339 → python_netgear_switch_library-0.0.post341}/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.post339 → python_netgear_switch_library-0.0.post341}/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
|