From 7e8624a3dd62fea0fb0a3336b29f1a571059b178 Mon Sep 17 00:00:00 2001 From: Christian Manivong Date: Wed, 24 Jun 2026 14:47:08 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Fingerprint-Attribute=20f=C3=BCr=20Disc?= =?UTF-8?q?overy-Scoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ergänzt DRIVER_NAME, HTTP_FINGERPRINT, SNMP_FINGERPRINT, SSH_FINGERPRINT, PORT_SPECS und SNMP_OBJECT_ID_PREFIX gemäß docs/DISCOVERY_FINGERPRINTING.md. Co-Authored-By: Claude Sonnet 4.6 --- napalm_openmediavault.egg-info/PKG-INFO | 20 ++++++++++++++++++ napalm_openmediavault.egg-info/SOURCES.txt | 10 +++++++++ .../dependency_links.txt | 1 + .../entry_points.txt | 2 ++ napalm_openmediavault.egg-info/requires.txt | 3 +++ napalm_openmediavault.egg-info/top_level.txt | 1 + .../openmediavault.cpython-312.pyc | Bin 25375 -> 25638 bytes napalm_openmediavault/openmediavault.py | 8 +++++++ 8 files changed, 45 insertions(+) create mode 100644 napalm_openmediavault.egg-info/PKG-INFO create mode 100644 napalm_openmediavault.egg-info/SOURCES.txt create mode 100644 napalm_openmediavault.egg-info/dependency_links.txt create mode 100644 napalm_openmediavault.egg-info/entry_points.txt create mode 100644 napalm_openmediavault.egg-info/requires.txt create mode 100644 napalm_openmediavault.egg-info/top_level.txt diff --git a/napalm_openmediavault.egg-info/PKG-INFO b/napalm_openmediavault.egg-info/PKG-INFO new file mode 100644 index 0000000..5626507 --- /dev/null +++ b/napalm_openmediavault.egg-info/PKG-INFO @@ -0,0 +1,20 @@ +Metadata-Version: 2.4 +Name: napalm-openmediavault +Version: 0.1.0 +Summary: NAPALM driver for OpenMediaVault NAS (SSH) +Author-email: Christian Manivong +License: Apache-2.0 +Project-URL: Repository, https://github.com/chrismanivong/napalm-openmediavault +Keywords: napalm,network,automation,nas,openmediavault,omv,storage +Classifier: Development Status :: 3 - Alpha +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: License :: OSI Approved :: Apache Software License +Classifier: Programming Language :: Python :: 3 +Classifier: Topic :: System :: Networking +Classifier: Topic :: System :: Systems Administration +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +Requires-Dist: napalm>=4.0 +Requires-Dist: napalm-device-types>=0.3.0 +Requires-Dist: napalm-linux>=0.1.0 diff --git a/napalm_openmediavault.egg-info/SOURCES.txt b/napalm_openmediavault.egg-info/SOURCES.txt new file mode 100644 index 0000000..059d625 --- /dev/null +++ b/napalm_openmediavault.egg-info/SOURCES.txt @@ -0,0 +1,10 @@ +pyproject.toml +napalm_openmediavault/__init__.py +napalm_openmediavault/openmediavault.py +napalm_openmediavault.egg-info/PKG-INFO +napalm_openmediavault.egg-info/SOURCES.txt +napalm_openmediavault.egg-info/dependency_links.txt +napalm_openmediavault.egg-info/entry_points.txt +napalm_openmediavault.egg-info/requires.txt +napalm_openmediavault.egg-info/top_level.txt +tests/test_omv_type_label.py \ No newline at end of file diff --git a/napalm_openmediavault.egg-info/dependency_links.txt b/napalm_openmediavault.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/napalm_openmediavault.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/napalm_openmediavault.egg-info/entry_points.txt b/napalm_openmediavault.egg-info/entry_points.txt new file mode 100644 index 0000000..0ff4e97 --- /dev/null +++ b/napalm_openmediavault.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[napalm.drivers] +openmediavault = napalm_openmediavault:OpenMediaVaultDriver diff --git a/napalm_openmediavault.egg-info/requires.txt b/napalm_openmediavault.egg-info/requires.txt new file mode 100644 index 0000000..8eb100d --- /dev/null +++ b/napalm_openmediavault.egg-info/requires.txt @@ -0,0 +1,3 @@ +napalm>=4.0 +napalm-device-types>=0.3.0 +napalm-linux>=0.1.0 diff --git a/napalm_openmediavault.egg-info/top_level.txt b/napalm_openmediavault.egg-info/top_level.txt new file mode 100644 index 0000000..c87b84f --- /dev/null +++ b/napalm_openmediavault.egg-info/top_level.txt @@ -0,0 +1 @@ +napalm_openmediavault diff --git a/napalm_openmediavault/__pycache__/openmediavault.cpython-312.pyc b/napalm_openmediavault/__pycache__/openmediavault.cpython-312.pyc index 8a6a537dfa0fb98fddf15ca913e74f664bf4e7a6..96a292ff1700ab98322cef63d18f45a90aa9db91 100644 GIT binary patch delta 2876 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 diff --git a/napalm_openmediavault/openmediavault.py b/napalm_openmediavault/openmediavault.py index 5d4844d..8472d84 100644 --- a/napalm_openmediavault/openmediavault.py +++ b/napalm_openmediavault/openmediavault.py @@ -22,6 +22,7 @@ import json as _json import re from typing import Any +from napalm_device_types import FingerprintRule from napalm_device_types.models import ( DiskPoolDict, LogicalVolumeDict, @@ -48,7 +49,14 @@ class OpenMediaVaultDriver(LinuxDriver): """ TYPE_LABEL = "Storage" + DRIVER_NAME = "openmediavault" driver_name = "openmediavault" + SSH_FINGERPRINT = [ + FingerprintRule("debian", weight=4.0), + ] + HTTP_FINGERPRINT = [ + FingerprintRule("openmediavault", weight=9.0, mandatory=True), + ] # ── Facts override ─────────────────────────────────────────────────────────