python-netgear-switch-library 0.0.post346__tar.gz → 0.0.post348__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.post346 → python_netgear_switch_library-0.0.post348}/PKG-INFO +1 -1
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/_version.py +2 -2
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/aio_api.py +15 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/capabilities.py +14 -9
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/nsdp_write.py +23 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/nsdp/write.py +11 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/snmp_write.py +61 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/sync_api.py +16 -3
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_capabilities.py +1 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/.github/workflows/ci.yml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/.github/workflows/deb.yml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/.github/workflows/publish-pypi.yml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/.gitignore +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/.readthedocs.yaml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/CLAUDE.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/LICENSE +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/README.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/RELEASING.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/debian/changelog +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/debian/control +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/debian/copyright +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/debian/rules +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/debian/source/format +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/Makefile +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_ext/filelinks.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_ext/support_tables.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/models/gs105pe.png +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/models/gs110emx.png +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/models/gs305ep.png +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/models/gs728tpp.png +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/models/gsm7228ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/models/gsm7252ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/models/m4300-16x.png +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/models/m4300-24x.png +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/_static/ngsw.css +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/core.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/facades.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/index.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/operations.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/protocols.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/transport.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/api/virtual.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/conf.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/development.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/fake/index.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/fake/internals.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/fake/serving.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/fake/testing.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/guide/concepts.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/guide/configuration.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/guide/installation.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/guide/principles.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/guide/quickstart.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/guide/reading.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/guide/writing.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/index.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/gs105pe.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/gs110emx.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/gs305ep.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/gs728tpp.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/gsm7228ps.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/gsm7252ps.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/index.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/m4300-16x.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/m4300-24x.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/models/support.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/http/cheetah-form.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/http/cheetah-v1.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/http/gambit.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/http/merge-hash-cgi.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/http/xml-api.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/http.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/index.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/nsdp.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/protocols/snmp.rst +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-15-foundation.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-17-slice-02-snmp-read-core.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-17-slice-03-read-apis.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-18-slice-04-snmp-write.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-18-slice-05-nsdp.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-18-slice-06-http.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-18-slice-07-cli.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-18-slice-08-packaging-ci.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/plans/2026-07-23-gsm7252ps-http-xe-dialect.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/specs/2026-07-15-netgear-control-library-design.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/specs/2026-07-23-gsm7252ps-http-xe-dialect-design.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/docs/superpowers/specs/2026-08-02-snmp-surface-findings.md +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/packaging/apt-index.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/packaging/ci-build.sh +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/packaging/deb-version.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/pyproject.toml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli/capture.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli/context.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli/format.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli/main.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli/resolve.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli/safety.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/config.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/errors.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/http_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/http_write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/mcp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/mcp/server.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/models.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/cli/commands.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/cli/parse.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/http/crypt.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/http/endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/http/forms.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/http/parse.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/http/session.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/http/types.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/nsdp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/nsdp/auth.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/nsdp/client.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/nsdp/parsers.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/nsdp/protocol.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/nsdp/types.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/snmp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/snmp/client.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/snmp/oids.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/snmp/parse.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/protocols/snmp/write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/py.typed +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/registry.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/aio/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/aio/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/aio/snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/cli/console.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/cli/session.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/cli/ssh.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/cli/telnet.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/http/client.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/sync/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/sync/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/transport/sync/snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/cli_fastpath.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/faces/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/faces/cli.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/faces/http.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/faces/mibview.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/faces/nsdp.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/faces/snmp.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/seed.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/server.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/state.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_fastpath_vlan.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_fastpath_xui.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_gs105pe.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_gs110emx.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_gs110emx_templates.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_gs728tpp.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_gsm7228ps.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_gsm7252ps.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/src/netgear_switch/virtual/web_m4300.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/capture_parity.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_capture.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_cli_integration.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_control_poe_port.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_control_vlan_ip.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_format.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_main_framework.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_new_commands.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_op_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_prompt_wiring.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_read_commands.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_resolve.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_safety.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/cli/test_serve.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/conftest.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/captures/gsm7228ps.json +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/captures/gsm7252ps.json +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/captures/m4300-16x.json +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/captures/m4300-24x.json +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_lldp.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_mac_table.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_network.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_poe.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7228ps_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_network.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/gsm7252ps_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_vlan_1.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_vlan_4.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_16x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/cli/m4300_24x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs105pe_membership.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs105pe_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs105pe_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs105pe_status.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs105pe_switch_info.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs105pe_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs110emx_cf8021q.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs110emx_interface_stats.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs110emx_login.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs110emx_port_settings.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs110emx_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs110emx_redirect.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs110emx_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs110emx_vlanmembership.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs305ep_dashboard.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs305ep_login.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs305ep_membership.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs305ep_poestatus.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs305ep_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs305ep_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs305ep_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_device_info_and_sensors.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_lldp.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_macs.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_mgmt_ip.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_poe.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_ports.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_pvids_membership.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_vlan_membership_per_vlan.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gs728tpp_vlans.xml +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_vlanPortCfg_vlan5.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7228ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_login.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan141.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/gsm7252ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_16x_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_16x_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_16x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_16x_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_16x_vlanportcfg_vlan4.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_24x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_addresstable.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_ports.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_vlanportcfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/http/m4300_vlanstatus.html +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/snmp/gsm7252ps_fans.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/snmp/gsm7252ps_ifhighspeed.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/snmp/gsm7252ps_ifoperstatus.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/fixtures/snmp/gsm7252ps_psu.txt +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/http_specs.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/cli/test_cli_parse.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/http/test_crypt.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/http/test_endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/http/test_forms.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/http/test_parse.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/nsdp/test_auth.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/nsdp/test_parsers.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/nsdp/test_protocol.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/nsdp/test_write_frame.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_client.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_oids.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_parse_lldp_macs.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_parse_mgmt_ip.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_parse_poe_sensors.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_parse_ports.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_parse_system_info.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_parse_vlans.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/protocols/snmp/test_write_encode.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_aio_api.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_cli_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_cli_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_config.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_cross_backend_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_deb_version.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_docs_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_errors.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_facade_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_http_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_http_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_http_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_http_vlan_membership.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_http_write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_http_xui_writes.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_import.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_mcp_server.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_models.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_models_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_nsdp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_public_api.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_quality_gates.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_registry.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_snmp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_sync_api.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_version.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/test_write_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/_fastpath_fake.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_cli_console.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_cli_scp_cert.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_cli_telnet.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_http_client.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_nsdp_udp_sync.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_set_transport.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/transport/test_value_parity.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_cli_cross_backend.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_cli_gsm7228ps_parity.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_gsm7228ps_seed.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_hostname.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_m4300_seeds.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_mibview.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_mutable_state.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_nsdp_state.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_serve_daemon.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_snmp_write_face.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_state_seed.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_switchport_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_virtual_http_face.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_virtual_nsdp_face.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_virtual_snmp_face.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/tests/virtual/test_web_projection.py +0 -0
- {python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/uv.lock +0 -0
{python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/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.post348
|
|
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.post348'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 'post348')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -661,6 +661,21 @@ class AsyncSwitch:
|
|
|
661
661
|
lambda w: w.clear_poe_fault(port, force=force, timeouts=timeouts), backend
|
|
662
662
|
)
|
|
663
663
|
|
|
664
|
+
async def set_syslog_enabled(
|
|
665
|
+
self,
|
|
666
|
+
enabled: bool,
|
|
667
|
+
*,
|
|
668
|
+
force: bool = False,
|
|
669
|
+
backend: Backend | None = None,
|
|
670
|
+
) -> None:
|
|
671
|
+
"""Turn remote syslog on or off.
|
|
672
|
+
|
|
673
|
+
Served over SNMP. Adding or removing a COLLECTOR is a separate,
|
|
674
|
+
unbuilt operation -- it needs a row-status write that has not
|
|
675
|
+
been driven against hardware.
|
|
676
|
+
"""
|
|
677
|
+
await self._write(lambda w: w.set_syslog_enabled(enabled, force=force), backend)
|
|
678
|
+
|
|
664
679
|
async def set_hostname(
|
|
665
680
|
self, name: str, *, force: bool = False, backend: Backend | None = None
|
|
666
681
|
) -> None:
|
|
@@ -175,16 +175,21 @@ WRITE_OPERATIONS: tuple[Operation, ...] = (
|
|
|
175
175
|
"set_hostname",
|
|
176
176
|
OperationKind.WRITE,
|
|
177
177
|
"Set the switch's host name",
|
|
178
|
-
# SNMP (sysName,
|
|
179
|
-
#
|
|
178
|
+
# SNMP (sysName), NSDP (tag 0x0003) and the FASTPATH CLI (`hostname`),
|
|
179
|
+
# each confirmed writable against real hardware:
|
|
180
180
|
#
|
|
181
|
-
#
|
|
182
|
-
#
|
|
183
|
-
#
|
|
184
|
-
#
|
|
185
|
-
#
|
|
186
|
-
#
|
|
187
|
-
|
|
181
|
+
# SNMP all five reachable switches accepted a SET of the value they
|
|
182
|
+
# already held -- a zero-impact writability probe
|
|
183
|
+
# NSDP live round trip on gs110emx3 (10.1.5.27): recorded the prior
|
|
184
|
+
# name, wrote a throwaway, read it back, restored, re-read
|
|
185
|
+
# CLI round-trips on all four CLI models
|
|
186
|
+
#
|
|
187
|
+
# That closes the Plus-model hole this restriction used to expose: every
|
|
188
|
+
# registered model now has at least one backend that can rename it. HTTP
|
|
189
|
+
# is still absent -- two web UIs carry a switch_name field but the write
|
|
190
|
+
# is unbuilt -- so the restriction stays, and states what the library
|
|
191
|
+
# serves rather than what the devices can do.
|
|
192
|
+
backends=frozenset({Backend.SNMP, Backend.NSDP}) | _CLI_BACKENDS,
|
|
188
193
|
),
|
|
189
194
|
Operation(
|
|
190
195
|
"upload_certificate",
|
|
@@ -33,6 +33,7 @@ from .models import VlanMode
|
|
|
33
33
|
from .nsdp_read import AsyncNsdpReader, NsdpReader
|
|
34
34
|
from .protocols.nsdp.protocol import Tag
|
|
35
35
|
from .protocols.nsdp.write import (
|
|
36
|
+
hostname_tlv,
|
|
36
37
|
ipv4_tlv,
|
|
37
38
|
pvid_tlv,
|
|
38
39
|
vlan_destroy_tlv,
|
|
@@ -132,6 +133,28 @@ class NsdpWriter:
|
|
|
132
133
|
def _vlan(self, vlan: int) -> VLANInfo | None:
|
|
133
134
|
return next((v for v in self._reader.get_vlans() if v.vlan_id == vlan), None)
|
|
134
135
|
|
|
136
|
+
def set_hostname(self, name: str, *, force: bool = False) -> None:
|
|
137
|
+
"""Set the switch's host name over NSDP (tag 0x0003).
|
|
138
|
+
|
|
139
|
+
The Plus family's only write route for this: those switches have no SNMP
|
|
140
|
+
agent and no CLI, so without this they cannot be renamed at all.
|
|
141
|
+
|
|
142
|
+
Not force-gated -- renaming cannot strand a switch, and it is reversible
|
|
143
|
+
by writing the old name back. Verified by re-reading the tag.
|
|
144
|
+
"""
|
|
145
|
+
del force # accepted for a uniform writer signature; nothing to gate
|
|
146
|
+
if not name.strip():
|
|
147
|
+
raise ValueError("hostname must not be empty")
|
|
148
|
+
before = self._reader.get_hostname()
|
|
149
|
+
self.client.write([hostname_tlv(name)], password=self._password)
|
|
150
|
+
after = self._reader.get_hostname()
|
|
151
|
+
if after != name:
|
|
152
|
+
raise WriteVerificationError(
|
|
153
|
+
f"host name is {after!r} after writing {name!r}",
|
|
154
|
+
before=before,
|
|
155
|
+
after=after,
|
|
156
|
+
)
|
|
157
|
+
|
|
135
158
|
def set_pvid(self, port: int, vlan: int, *, force: bool = False) -> None:
|
|
136
159
|
# LIVE-VERIFIED over NSDP v2 on a GS110EMX (fw 1.0.2.8): PORT_PVID
|
|
137
160
|
# (0x3000) IS writable (the reference spec's READ-ONLY marking was
|
|
@@ -157,6 +157,17 @@ def port_name_tlv(port: int, name: str) -> TLVEntry:
|
|
|
157
157
|
return TLVEntry(Tag.PORT_NAME, bytes([port]) + name.encode("utf-8"))
|
|
158
158
|
|
|
159
159
|
|
|
160
|
+
def hostname_tlv(name: str) -> TLVEntry:
|
|
161
|
+
"""Host-name write TLV (tag 0x0003), the same shape the read decodes.
|
|
162
|
+
|
|
163
|
+
The read side is measured -- ``parsers`` decodes this tag as plain text and
|
|
164
|
+
three live GS110EMX report their names through it -- so the write is that
|
|
165
|
+
encoding with nothing added: the bare name, ASCII, no length prefix and no
|
|
166
|
+
port byte (unlike ``port_name_tlv`` above, whose tag is indexed by port).
|
|
167
|
+
"""
|
|
168
|
+
return TLVEntry(Tag.HOSTNAME, name.encode("ascii"))
|
|
169
|
+
|
|
170
|
+
|
|
160
171
|
def ipv4_tlv(tag: Tag, dotted: str) -> TLVEntry:
|
|
161
172
|
return TLVEntry(tag, socket.inet_aton(dotted))
|
|
162
173
|
|
|
@@ -707,6 +707,46 @@ class SnmpWriter:
|
|
|
707
707
|
after=after,
|
|
708
708
|
)
|
|
709
709
|
|
|
710
|
+
def set_syslog_enabled(self, enabled: bool, *, force: bool = False) -> None:
|
|
711
|
+
"""Turn remote syslog on or off.
|
|
712
|
+
|
|
713
|
+
Writes the vendor logging admin-mode column (``<base>.14.1.4.1.0``),
|
|
714
|
+
whose enum is ``1 = enabled, 2 = disabled`` -- established from captured
|
|
715
|
+
CLI rather than assumed, see ``oids.VendorOids.syslog_admin_mode``.
|
|
716
|
+
|
|
717
|
+
WRITABILITY MEASURED 2026-08-02 by SETting each switch the value it
|
|
718
|
+
already held, which cannot change device state but still distinguishes a
|
|
719
|
+
writable column from a read-only one: m4300-24x (10.1.5.13), gsm7252ps
|
|
720
|
+
(10.1.5.22) and gsm7228ps (10.1.5.11) all accepted it.
|
|
721
|
+
|
|
722
|
+
Deliberately narrower than ``get_syslog`` reads. Adding or removing a
|
|
723
|
+
COLLECTOR means creating a row in the host table, which needs a
|
|
724
|
+
row-status write that has not been driven against hardware; offering it
|
|
725
|
+
here on the strength of the read alone would be the inference this
|
|
726
|
+
project refuses.
|
|
727
|
+
|
|
728
|
+
Not force-gated: toggling log delivery cannot strand a switch and is
|
|
729
|
+
reversible by writing the old value back.
|
|
730
|
+
"""
|
|
731
|
+
del force # accepted for a uniform writer signature; nothing to gate
|
|
732
|
+
if not oids.has_vendor_oids(self.model):
|
|
733
|
+
raise UnsupportedCapabilityError(
|
|
734
|
+
f"model {self.model.key!r} registers no Netgear vendor OID "
|
|
735
|
+
"subtree, and the logging columns are vendor-only"
|
|
736
|
+
)
|
|
737
|
+
vo = oids.vendor_oids(self.model)
|
|
738
|
+
before = self._reader.get_syslog()
|
|
739
|
+
self.client.set_many(
|
|
740
|
+
[SetVarbind(vo.syslog_admin_mode, 1 if enabled else 2, "i")]
|
|
741
|
+
)
|
|
742
|
+
after = self._reader.get_syslog()
|
|
743
|
+
if after.enabled != enabled:
|
|
744
|
+
raise WriteVerificationError(
|
|
745
|
+
f"syslog enabled is {after.enabled} after writing {enabled}",
|
|
746
|
+
before=before,
|
|
747
|
+
after=after,
|
|
748
|
+
)
|
|
749
|
+
|
|
710
750
|
def set_hostname(self, name: str, *, force: bool = False) -> None:
|
|
711
751
|
"""Set the switch's host name via the standard MIB-II ``sysName``.
|
|
712
752
|
|
|
@@ -1112,6 +1152,27 @@ class AsyncSnmpWriter:
|
|
|
1112
1152
|
after=after,
|
|
1113
1153
|
)
|
|
1114
1154
|
|
|
1155
|
+
async def set_syslog_enabled(self, enabled: bool, *, force: bool = False) -> None:
|
|
1156
|
+
"""Async twin of ``SnmpWriter.set_syslog_enabled`` -- see there."""
|
|
1157
|
+
del force # accepted for a uniform writer signature; nothing to gate
|
|
1158
|
+
if not oids.has_vendor_oids(self.model):
|
|
1159
|
+
raise UnsupportedCapabilityError(
|
|
1160
|
+
f"model {self.model.key!r} registers no Netgear vendor OID "
|
|
1161
|
+
"subtree, and the logging columns are vendor-only"
|
|
1162
|
+
)
|
|
1163
|
+
vo = oids.vendor_oids(self.model)
|
|
1164
|
+
before = await self._reader.get_syslog()
|
|
1165
|
+
await self.client.set_many(
|
|
1166
|
+
[SetVarbind(vo.syslog_admin_mode, 1 if enabled else 2, "i")]
|
|
1167
|
+
)
|
|
1168
|
+
after = await self._reader.get_syslog()
|
|
1169
|
+
if after.enabled != enabled:
|
|
1170
|
+
raise WriteVerificationError(
|
|
1171
|
+
f"syslog enabled is {after.enabled} after writing {enabled}",
|
|
1172
|
+
before=before,
|
|
1173
|
+
after=after,
|
|
1174
|
+
)
|
|
1175
|
+
|
|
1115
1176
|
async def set_hostname(self, name: str, *, force: bool = False) -> None:
|
|
1116
1177
|
"""Async twin of ``SnmpWriter.set_hostname`` -- see there."""
|
|
1117
1178
|
del force # accepted for a uniform writer signature; nothing to gate
|
|
@@ -503,9 +503,7 @@ class SyncSwitch:
|
|
|
503
503
|
has -- the actionable information the old silent fallback destroyed.
|
|
504
504
|
"""
|
|
505
505
|
if requested is None:
|
|
506
|
-
others = sorted(
|
|
507
|
-
b.name for b in self.model.backends if b is not chosen
|
|
508
|
-
)
|
|
506
|
+
others = sorted(b.name for b in self.model.backends if b is not chosen)
|
|
509
507
|
hint = (
|
|
510
508
|
f"; pass backend=Backend.<{'|'.join(others)}> to use another backend"
|
|
511
509
|
if others
|
|
@@ -814,6 +812,21 @@ class SyncSwitch:
|
|
|
814
812
|
lambda w: w.clear_poe_fault(port, force=force, timeouts=timeouts), backend
|
|
815
813
|
)
|
|
816
814
|
|
|
815
|
+
def set_syslog_enabled(
|
|
816
|
+
self,
|
|
817
|
+
enabled: bool,
|
|
818
|
+
*,
|
|
819
|
+
force: bool = False,
|
|
820
|
+
backend: Backend | None = None,
|
|
821
|
+
) -> None:
|
|
822
|
+
"""Turn remote syslog on or off.
|
|
823
|
+
|
|
824
|
+
Served over SNMP. Adding or removing a COLLECTOR is a separate,
|
|
825
|
+
unbuilt operation -- it needs a row-status write that has not
|
|
826
|
+
been driven against hardware.
|
|
827
|
+
"""
|
|
828
|
+
self._write(lambda w: w.set_syslog_enabled(enabled, force=force), backend)
|
|
829
|
+
|
|
817
830
|
def set_hostname(
|
|
818
831
|
self, name: str, *, force: bool = False, backend: Backend | None = None
|
|
819
832
|
) -> None:
|
|
@@ -97,6 +97,7 @@ _WRITE_ARGS: dict[str, tuple[tuple[Any, ...], dict[str, Any]]] = {
|
|
|
97
97
|
# `hostname` with no argument is rejected by the device itself and clearing
|
|
98
98
|
# a name is a different command (`no hostname`) that is not implemented.
|
|
99
99
|
"set_hostname": (("capcheck",), {}),
|
|
100
|
+
"set_syslog_enabled": ((True,), {}),
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
#: Not driven. ``upload_certificate_scp`` runs a multi-command deploy sequence
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/CLAUDE.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/LICENSE
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/README.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/RELEASING.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/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.post346 → python_netgear_switch_library-0.0.post348}/docs/cli.rst
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post346 → python_netgear_switch_library-0.0.post348}/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.post346 → python_netgear_switch_library-0.0.post348}/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
|