Source code for snmp_orm.adapter

"""Load and store all existed adapter's classes."""
from __future__ import absolute_import

from .utils import symbol_by_name
from .settings import SnmpV2Settings, SnmpV3Settings
from .config import DEFAULT_ADAPTER


[docs]class AdapterRegistry(dict): """Storage for adapter's classes.""" def __init__(self): self.get_class(DEFAULT_ADAPTER)
[docs] def get_class(self, module_name): if module_name in self: return self[module_name] else: cls = self[module_name] = \ symbol_by_name('%s:%s' % (module_name, "Adapter")) return cls #: Global storage of adapters.
registry = AdapterRegistry()
[docs]def get_adapter(host, version=None, class_name=None, **kwargs): """Create adapter instance for given host with given settings.""" cls = registry.get_class(class_name or DEFAULT_ADAPTER) if not host: raise ValueError('Provided host name is empty!') version = version if version in (1, 2, 3) else 2 kwargs.update({"host": host, "version": version}) settings_cls = SnmpV3Settings if version == 3 else SnmpV2Settings settings_read_kwargs = dict((key, value) for key, value in kwargs.items() if not key.startswith("write_")) for key in settings_read_kwargs.keys(): del kwargs[key] settings_write_kwargs = dict((key.replace("write_", ""), value) for key, value in kwargs.items()) return cls(settings_read=settings_cls(**settings_read_kwargs), settings_write=settings_cls(**settings_write_kwargs))

Project Versions

This Page