python-netgear-switch-library 0.0.post338__tar.gz → 0.0.post340__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.post338 → python_netgear_switch_library-0.0.post340}/PKG-INFO +1 -1
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/_version.py +2 -2
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/aio_api.py +4 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/capabilities.py +7 -1
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli_read.py +13 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/cli/commands.py +4 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/cli/parse.py +83 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/sync_api.py +14 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/.github/workflows/ci.yml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/.github/workflows/deb.yml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/.github/workflows/publish-pypi.yml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/.gitignore +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/.readthedocs.yaml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/CLAUDE.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/LICENSE +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/README.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/RELEASING.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/debian/changelog +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/debian/control +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/debian/copyright +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/debian/rules +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/debian/source/format +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/Makefile +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_ext/filelinks.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_ext/support_tables.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/models/gs105pe.png +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/models/gs110emx.png +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/models/gs305ep.png +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/models/gs728tpp.png +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/models/gsm7228ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/models/gsm7252ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/models/m4300-16x.png +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/models/m4300-24x.png +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/_static/ngsw.css +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/core.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/facades.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/index.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/operations.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/protocols.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/transport.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/api/virtual.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/conf.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/development.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/fake/index.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/fake/internals.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/fake/serving.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/fake/testing.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/guide/concepts.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/guide/configuration.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/guide/installation.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/guide/principles.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/guide/quickstart.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/guide/reading.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/guide/writing.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/index.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/gs105pe.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/gs110emx.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/gs305ep.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/gs728tpp.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/gsm7228ps.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/gsm7252ps.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/index.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/m4300-16x.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/m4300-24x.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/models/support.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/http/cheetah-form.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/http/cheetah-v1.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/http/gambit.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/http/merge-hash-cgi.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/http/xml-api.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/http.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/index.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/nsdp.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/protocols/snmp.rst +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-15-foundation.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-17-slice-02-snmp-read-core.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-17-slice-03-read-apis.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-18-slice-04-snmp-write.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-18-slice-05-nsdp.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-18-slice-06-http.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-18-slice-07-cli.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-18-slice-08-packaging-ci.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/plans/2026-07-23-gsm7252ps-http-xe-dialect.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/specs/2026-07-15-netgear-control-library-design.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/specs/2026-07-23-gsm7252ps-http-xe-dialect-design.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/docs/superpowers/specs/2026-08-02-snmp-surface-findings.md +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/packaging/apt-index.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/packaging/ci-build.sh +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/packaging/deb-version.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/pyproject.toml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli/capture.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli/context.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli/format.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli/main.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli/resolve.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli/safety.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/config.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/errors.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/http_read.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/http_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/mcp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/mcp/server.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/models.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/http/crypt.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/http/endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/http/forms.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/http/parse.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/http/session.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/http/types.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/nsdp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/nsdp/auth.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/nsdp/client.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/nsdp/parsers.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/nsdp/protocol.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/nsdp/types.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/nsdp/write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/snmp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/snmp/client.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/snmp/oids.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/snmp/parse.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/protocols/snmp/write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/py.typed +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/registry.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/aio/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/aio/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/aio/snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/cli/console.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/cli/session.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/cli/ssh.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/cli/telnet.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/http/client.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/sync/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/sync/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/transport/sync/snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/cli_fastpath.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/faces/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/faces/cli.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/faces/http.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/faces/mibview.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/faces/nsdp.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/faces/snmp.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/seed.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/server.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/state.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_fastpath_vlan.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_fastpath_xui.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_gs105pe.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_gs110emx.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_gs110emx_templates.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_gs728tpp.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_gsm7228ps.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_gsm7252ps.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/src/netgear_switch/virtual/web_m4300.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/capture_parity.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_capture.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_cli_integration.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_control_poe_port.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_control_vlan_ip.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_format.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_main_framework.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_new_commands.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_op_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_prompt_wiring.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_read_commands.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_resolve.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_safety.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/cli/test_serve.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/conftest.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/captures/gsm7228ps.json +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/captures/gsm7252ps.json +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/captures/m4300-16x.json +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/captures/m4300-24x.json +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_lldp.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_mac_table.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_network.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_poe.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7228ps_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_network.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/gsm7252ps_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_vlan_1.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_vlan_4.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_16x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/cli/m4300_24x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs105pe_membership.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs105pe_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs105pe_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs105pe_status.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs105pe_switch_info.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs105pe_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs110emx_cf8021q.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs110emx_interface_stats.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs110emx_login.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs110emx_port_settings.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs110emx_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs110emx_redirect.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs110emx_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs110emx_vlanmembership.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs305ep_dashboard.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs305ep_login.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs305ep_membership.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs305ep_poestatus.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs305ep_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs305ep_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs305ep_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_device_info_and_sensors.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_lldp.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_macs.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_mgmt_ip.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_poe.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_ports.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_pvids_membership.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_vlan_membership_per_vlan.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gs728tpp_vlans.xml +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_vlanPortCfg_vlan5.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7228ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_login.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan141.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/gsm7252ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_16x_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_16x_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_16x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_16x_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_16x_vlanportcfg_vlan4.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_24x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_addresstable.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_ports.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_vlanportcfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/http/m4300_vlanstatus.html +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/snmp/gsm7252ps_fans.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/snmp/gsm7252ps_ifhighspeed.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/snmp/gsm7252ps_ifoperstatus.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/fixtures/snmp/gsm7252ps_psu.txt +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/http_specs.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/cli/test_cli_parse.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/http/test_crypt.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/http/test_endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/http/test_forms.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/http/test_parse.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/nsdp/test_auth.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/nsdp/test_parsers.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/nsdp/test_protocol.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/nsdp/test_write_frame.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_client.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_oids.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_parse_lldp_macs.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_parse_mgmt_ip.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_parse_poe_sensors.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_parse_ports.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_parse_system_info.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_parse_vlans.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/protocols/snmp/test_write_encode.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_aio_api.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_capabilities.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_cli_read.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_cli_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_config.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_cross_backend_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_deb_version.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_docs_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_errors.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_facade_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_http_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_http_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_http_read.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_http_vlan_membership.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_http_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_http_xui_writes.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_import.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_mcp_server.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_models.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_models_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_nsdp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_public_api.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_quality_gates.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_registry.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_snmp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_sync_api.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_version.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/test_write_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/_fastpath_fake.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_cli_console.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_cli_scp_cert.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_cli_telnet.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_http_client.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_nsdp_udp_sync.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_set_transport.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/transport/test_value_parity.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_cli_cross_backend.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_cli_gsm7228ps_parity.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_gsm7228ps_seed.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_hostname.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_m4300_seeds.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_mibview.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_mutable_state.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_nsdp_state.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_serve_daemon.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_snmp_write_face.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_state_seed.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_switchport_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_virtual_http_face.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_virtual_nsdp_face.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_virtual_snmp_face.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/tests/virtual/test_web_projection.py +0 -0
- {python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/uv.lock +0 -0
{python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/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.post340
|
|
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.post340'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 'post340')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -447,6 +447,10 @@ class AsyncSwitch:
|
|
|
447
447
|
async def get_mgmt_ip(self, *, backend: Backend | None = None) -> MgmtIpConfig:
|
|
448
448
|
return await self._read(lambda r: r.get_mgmt_ip(), backend)
|
|
449
449
|
|
|
450
|
+
async def get_hostname(self, *, backend: Backend | None = None) -> str:
|
|
451
|
+
"""Async twin of ``SyncSwitch.get_hostname`` -- see there."""
|
|
452
|
+
return await self._read(lambda r: r.get_hostname(), backend)
|
|
453
|
+
|
|
450
454
|
async def nsdp_device(self) -> NsdpDevice:
|
|
451
455
|
"""Async twin of ``SyncSwitch.nsdp_device`` -- see there."""
|
|
452
456
|
reader = self._reader_for(Backend.NSDP)
|
|
@@ -113,6 +113,7 @@ READ_OPERATIONS: tuple[Operation, ...] = (
|
|
|
113
113
|
Operation("get_poe", OperationKind.READ, "Per-port PoE status and power draw"),
|
|
114
114
|
Operation("get_sensors", OperationKind.READ, "Fan/PSU/temperature sensors"),
|
|
115
115
|
Operation("get_mgmt_ip", OperationKind.READ, "Management IP configuration"),
|
|
116
|
+
Operation("get_hostname", OperationKind.READ, "The switch's host name"),
|
|
116
117
|
Operation(
|
|
117
118
|
"nsdp_device",
|
|
118
119
|
OperationKind.READ,
|
|
@@ -247,7 +248,7 @@ def _http_path_for(spec: HttpModelSpec, op: Operation) -> str | None:
|
|
|
247
248
|
ops with composite conditions defer to the reader's own helpers so there is
|
|
248
249
|
exactly one definition of "this UI can answer that".
|
|
249
250
|
"""
|
|
250
|
-
from .http_read import _mgmt_ip_path, _supports_sensors
|
|
251
|
+
from .http_read import _has_sysinfo_hostname, _mgmt_ip_path, _supports_sensors
|
|
251
252
|
|
|
252
253
|
simple: dict[str, str | None] = {
|
|
253
254
|
"get_ports": spec.dashboard_path,
|
|
@@ -269,6 +270,11 @@ def _http_path_for(spec: HttpModelSpec, op: Operation) -> str | None:
|
|
|
269
270
|
}
|
|
270
271
|
if op.name == "get_sensors":
|
|
271
272
|
return spec.sysinfo_path if _supports_sensors(spec) else None
|
|
273
|
+
if op.name == "get_hostname":
|
|
274
|
+
# Only two identity pages carry the field (gs110emx's sysInfo.html and
|
|
275
|
+
# gs105pe's switch_info.cgi); the reader's own predicate decides, so
|
|
276
|
+
# there is one definition rather than two that can drift.
|
|
277
|
+
return spec.sysinfo_path if _has_sysinfo_hostname(spec) else None
|
|
272
278
|
if op.name == "get_mgmt_ip":
|
|
273
279
|
return _mgmt_ip_path(spec)
|
|
274
280
|
if op.name == "set_mgmt_ip":
|
|
@@ -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
|
# ---------------------------------------------------------------------------
|
|
@@ -552,6 +552,20 @@ class SyncSwitch:
|
|
|
552
552
|
def get_mgmt_ip(self, *, backend: Backend | None = None) -> MgmtIpConfig:
|
|
553
553
|
return self._read(lambda r: r.get_mgmt_ip(), backend)
|
|
554
554
|
|
|
555
|
+
def get_hostname(self, *, backend: Backend | None = None) -> str:
|
|
556
|
+
"""The switch's host name.
|
|
557
|
+
|
|
558
|
+
Every backend can answer, but from a different place: SNMP reads the
|
|
559
|
+
standard ``sysName`` scalar, NSDP the ``HOSTNAME`` tag, the CLI
|
|
560
|
+
``show hosts``, and the web UI the device-identity page -- on the two
|
|
561
|
+
dialects whose page carries the field; the rest refuse by name.
|
|
562
|
+
|
|
563
|
+
The CLI deliberately parses ``show hosts`` rather than
|
|
564
|
+
``show running-config``: the two report different values on real
|
|
565
|
+
hardware, and only ``show hosts`` agrees with ``sysName``.
|
|
566
|
+
"""
|
|
567
|
+
return self._read(lambda r: r.get_hostname(), backend)
|
|
568
|
+
|
|
555
569
|
def nsdp_device(self) -> NsdpDevice:
|
|
556
570
|
"""Return the COMPLETE raw ``NsdpDevice`` for this switch: model, MAC,
|
|
557
571
|
hostname, mgmt IP, firmware, DHCP mode, port count, serial number,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/CLAUDE.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/LICENSE
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/README.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/RELEASING.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/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.post338 → python_netgear_switch_library-0.0.post340}/docs/cli.rst
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post338 → python_netgear_switch_library-0.0.post340}/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.post338 → python_netgear_switch_library-0.0.post340}/docs/mcp.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|