Source code for snmp_orm.settings
"""Implement device settings."""
from __future__ import absolute_import
from six import iteritems, with_metaclass
from snmp_orm.config import SNMP_PORT, BULK_ROW
[docs]class BaseSettings(with_metaclass(SettingsMeta, dict)):
allowed_keys = ("host", "port", "version", "use_bulk", "bulk_rows")
default_values = {"port": SNMP_PORT,
"version": lambda v: v if v in (1, 2, 3) else 2,
"use_bulk": True,
"bulk_rows": BULK_ROW,
}
def __init__(self, **kwargs):
self.update(kwargs)
for key, value in iteritems(type(self).default_values):
self.set_default(key, value)
[docs] def set_default(self, key, default):
if key in self.allowed_keys_set:
if callable(default):
self[key] = default(key)
elif key not in self or not self[key]:
self[key] = default
[docs] def prepare_kwargs(self):
return dict((key, value)
for key, value in iteritems(self)
if key in self.allowed_keys_set)
[docs]class SnmpV2Settings(BaseSettings):
allowed_keys = ("community", )
default_values = {"community": "public"}
[docs]class SnmpV3Settings(BaseSettings):
allowed_keys = ("sec_name", "sec_level",
"auth_protocol", "auth_passphrase",
"priv_protocol", "priv_passphrase")