snmp_orm Package

snmp_orm Package

Python-based tool providing a simple interface to work SNMP agents.

snmp_orm.__init__.get_device(host, **kwargs)

Return Device instance for specified host.

Arguments for device (for write access use write_ prefix):

  • host – IP or hostname if snmp agent;
  • port – agent UDP port, default 161;
  • version – SNMP version, 1, 2 or 3;
  • registry – custom registry class for class lookup;
  • class_name – adapter class;
  • community – SNMP community;
  • sec_name – security name;
  • sec_level – security level;
  • auth_protocol – auth protocol;
  • auth_passphrase – auth passphrase;
  • priv_protocol – priv protocol;
  • priv_passphrase – priv passphrase.

Other arguments:

  • manager custom instance of manager class;
  • device_cls custom device class, will be used instead of autolookup.

adapter Module

Load and store all existed adapter’s classes.

class snmp_orm.adapter.AdapterRegistry[source]

Bases: dict

Storage for adapter’s classes.

get_class(module_name)[source]
snmp_orm.adapter.get_adapter(host, version=None, class_name=None, **kwargs)[source]

Create adapter instance for given host with given settings.

snmp_orm.adapter.registry = {'snmp_orm.adapters.pysnmp': <class 'snmp_orm.adapters.pysnmp.Adapter'>}

Global storage of adapters.

config Module

Default configuration for snmp_orm.

snmp_orm.config.BULK_ROW = 50

How many rows should be read in bulk-mode at once.

snmp_orm.config.DEBUG = False

Should we print debug info?

snmp_orm.config.DEFAULT_ADAPTER = 'snmp_orm.adapters.pysnmp'

Which adapter we should use by default?

snmp_orm.config.OID_OBJECT_ID = '1.3.6.1.2.1.1.2.0'

Which OID should be used to detect device model.

snmp_orm.config.SNMP_PORT = 161

Default SNMP device’s port to connect.

snmp_orm.config.SNMP_TEST_AGENT_ADDRESS = ('localhost', 60161)

Default SNMP device’s address to connect, used in unit-tests.

defines Module

Some constants for snmp_orm.

snmp_orm.defines.IANAifType = {1: 'other', 2: 'regular1822', 3: 'hdh1822', 4: 'ddnX25', 5: 'rfc877x25', 6: 'ethernetCsmacd', 7: 'iso88023Csmacd', 8: 'iso88024TokenBus', 9: 'iso88025TokenRing', 10: 'iso88026Man', 11: 'starLan', 12: 'proteon10Mbit', 13: 'proteon80Mbit', 14: 'hyperchannel', 15: 'fddi', 16: 'lapb', 17: 'sdlc', 18: 'ds1', 19: 'e1', 20: 'basicISDN', 21: 'primaryISDN', 22: 'propPointToPointSerial', 23: 'ppp', 24: 'softwareLoopback', 25: 'eon', 26: 'ethernet3Mbit', 27: 'nsip', 28: 'slip', 29: 'ultra', 30: 'ds3', 31: 'sip', 32: 'frameRelay', 33: 'rs232', 34: 'para', 35: 'arcnet', 36: 'arcnetPlus', 37: 'atm', 38: 'miox25', 39: 'sonet', 40: 'x25ple', 41: 'iso88022llc', 42: 'localTalk', 43: 'smdsDxi', 44: 'frameRelayService', 45: 'v35', 46: 'hssi', 47: 'hippi', 48: 'modem', 49: 'aal5', 50: 'sonetPath', 51: 'sonetVT', 52: 'smdsIcip', 53: 'propVirtual', 54: 'propMultiplexor', 55: 'ieee80212', 56: 'fibreChannel', 57: 'hippiInterface', 58: 'frameRelayInterconnect', 59: 'aflane8023', 60: 'aflane8025', 61: 'cctEmul', 62: 'fastEther', 63: 'isdn', 64: 'v11', 65: 'v36', 66: 'g703at64k', 67: 'g703at2mb', 68: 'qllc', 69: 'fastEtherFX', 70: 'channel', 71: 'ieee80211', 72: 'ibm370parChan', 73: 'escon', 74: 'dlsw', 75: 'isdns', 76: 'isdnu', 77: 'lapd', 78: 'ipSwitch', 79: 'rsrb', 80: 'atmLogical', 81: 'ds0', 82: 'ds0Bundle', 83: 'bsc', 84: 'async', 85: 'cnr', 86: 'iso88025Dtr', 87: 'eplrs', 88: 'arap', 89: 'propCnls', 90: 'hostPad', 91: 'termPad', 92: 'frameRelayMPI', 93: 'x213', 94: 'adsl', 95: 'radsl', 96: 'sdsl', 97: 'vdsl', 98: 'iso88025CRFPInt', 99: 'myrinet', 100: 'voiceEM', 101: 'voiceFXO', 102: 'voiceFXS', 103: 'voiceEncap', 104: 'voiceOverIp', 105: 'atmDxi', 106: 'atmFuni', 107: 'atmIma', 108: 'pppMultilinkBundle', 109: 'ipOverCdlc', 110: 'ipOverClaw', 111: 'stackToStack', 112: 'virtualIpAddress', 113: 'mpc', 114: 'ipOverAtm', 115: 'iso88025Fiber', 116: 'tdlc', 117: 'gigabitEthernet', 118: 'hdlc', 119: 'lapf', 120: 'v37', 121: 'x25mlp', 122: 'x25huntGroup', 123: 'transpHdlc', 124: 'interleave', 125: 'fast', 126: 'ip', 127: 'docsCableMaclayer', 128: 'docsCableDownstream', 129: 'docsCableUpstream', 130: 'a12MppSwitch', 131: 'tunnel', 132: 'coffee', 133: 'ces', 134: 'atmSubInterface', 135: 'l2vlan', 136: 'l3ipvlan', 137: 'l3ipxvlan', 138: 'digitalPowerline', 139: 'mediaMailOverIp', 140: 'dtm', 141: 'dcn', 142: 'ipForward', 143: 'msdsl', 144: 'ieee1394', 145: 'if-gsn', 146: 'dvbRccMacLayer', 147: 'dvbRccDownstream', 148: 'dvbRccUpstream', 149: 'atmVirtual', 150: 'mplsTunnel', 151: 'srp', 152: 'voiceOverAtm', 153: 'voiceOverFrameRelay', 154: 'idsl', 155: 'compositeLink', 156: 'ss7SigLink', 157: 'propWirelessP2P', 158: 'frForward', 159: 'rfc1483', 160: 'usb', 161: 'ieee8023adLag', 162: 'bgppolicyaccounting', 163: 'frf16MfrBundle', 164: 'h323Gatekeeper', 165: 'h323Proxy', 166: 'mpls', 167: 'mfSigLink', 168: 'hdsl2', 169: 'shdsl', 170: 'ds1FDL', 171: 'pos', 172: 'dvbAsiIn', 173: 'dvbAsiOut', 174: 'plc', 175: 'nfas', 176: 'tr008', 177: 'gr303RDT', 178: 'gr303IDT', 179: 'isup', 180: 'propDocsWirelessMaclayer', 181: 'propDocsWirelessDownstream', 182: 'propDocsWirelessUpstream', 183: 'hiperlan2', 184: 'propBWAp2Mp', 185: 'sonetOverheadChannel', 186: 'digitalWrapperOverheadChannel', 187: 'aal2', 188: 'radioMAC', 189: 'atmRadio', 190: 'imt', 191: 'mvl', 192: 'reachDSL', 193: 'frDlciEndPt', 194: 'atmVciEndPt', 195: 'opticalChannel', 196: 'opticalTransport', 197: 'propAtm', 198: 'voiceOverCable', 199: 'infiniband', 200: 'teLink', 201: 'q2931', 202: 'virtualTg', 203: 'sipTg', 204: 'sipSig', 205: 'docsCableUpstreamChannel', 206: 'econet', 207: 'pon155', 208: 'pon622', 209: 'bridge', 210: 'linegroup', 211: 'voiceEMFGD', 212: 'voiceFGDEANA', 213: 'voiceDID', 214: 'mpegTransport', 215: 'sixToFour', 216: 'gtp', 217: 'pdnEtherLoop1', 218: 'pdnEtherLoop2', 219: 'opticalChannelGroup', 220: 'homepna', 221: 'gfp', 222: 'ciscoISLvlan', 223: 'actelisMetaLOOP', 224: 'fcipLink', 225: 'rpr', 226: 'qam', 227: 'lmp', 228: 'cblVectaStar', 229: 'docsCableMCmtsDownstream', 230: 'adsl2', 231: 'macSecControlledIF', 232: 'macSecUncontrolledIF', 233: 'aviciOpticalEther', 234: 'atmbond', 235: 'voiceFGDOS', 236: 'mocaVersion1', 237: 'ieee80216WMAN', 238: 'adsl2plus', 239: 'dvbRcsMacLayer', 240: 'dvbTdm', 241: 'dvbRcsTdma', 242: 'x86Laps', 243: 'wwanPP', 244: 'wwanPP2', 245: 'voiceEBS', 246: 'ifPwType', 247: 'ilan', 248: 'pip', 249: 'aluELP', 250: 'gpon', 251: 'vdsl2'}

1.3.6.1.2.1.2.2.1.3

snmp_orm.defines.ifStatus = {1: 'up', 2: 'down', 3: 'testing', 4: 'unknown', 5: 'dormant', 6: 'notPresent', 7: 'lowerLayerDown'}

1.3.6.1.2.1.2.2.1.8 (ifOperStatus)

snmp_orm.defines.ipForwarding = {1: 'forwarding', 2: 'not-forwarding'}

1.3.6.1.2.1.4.1 (ipForwarding)

snmp_orm.defines.ipNetToMediaType = {1: 'other', 2: 'invalid', 3: 'dynamic', 4: 'static'}

1.3.6.1.2.1.4.22.1.4 (ipNetToMediaType)

snmp_orm.defines.ipRouteProto = {1: 'other', 2: 'local', 3: 'netmgmt', 4: 'icmp', 5: 'egp', 6: 'ggp', 7: 'hello', 8: 'rip', 9: 'is-is', 10: 'es-is', 11: 'ciscoIgrp', 12: 'bbnSpfIgp', 13: 'ospf', 14: 'bgp'}

1.3.6.1.2.1.4.21.1.9 (ipRouteProto)

snmp_orm.defines.ipRouteType = {1: 'other', 2: 'invalid', 3: 'direct', 4: 'indirect'}

1.3.6.1.2.1.4.21.1.8 (ipRouteType)

device Module

Manager for devices.

class snmp_orm.device.DeviceClassRegistry(packages=None, default=None)[source]

Bases: dict

Store mapping of OID to device class.

Arguments:

  • packages, iterable, contains list of packages with defined

    devices.Device;

  • default, default class, that should returned if no class found;

class AbstractDevice(host, **kwargs)

Bases: snmp_orm.devices.base.NewBase

Abstract device class, used to find other devices in package.

classId = None
meta = <snmp_orm.devices.base.DeviceMeta instance at 0x1f7e680>
prepare_val_by_oid(oid, var)

Prepare value for given OID.

DeviceClassRegistry.add(cls)[source]

Add class to registry.

DeviceClassRegistry.find_devices()[source]

Find existed device classes.

DeviceClassRegistry.get_class(key)

Get class by it’s OID or return default.

class snmp_orm.device.DeviceManager(registry=None)[source]

Bases: object

Used to get class of given host.

Registry

alias of DeviceClassRegistry

get_class(host, **kwargs)[source]
snmp_orm.device.default_manager = <snmp_orm.device.DeviceManager object at 0x1f8de90>

Default device manager instance.

snmp_orm.device.get_device(host, **kwargs)[source]

Return Device instance for specified host.

Arguments for device (for write access use write_ prefix):

  • host – IP or hostname if snmp agent;
  • port – agent UDP port, default 161;
  • version – SNMP version, 1, 2 or 3;
  • registry – custom registry class for class lookup;
  • class_name – adapter class;
  • community – SNMP community;
  • sec_name – security name;
  • sec_level – security level;
  • auth_protocol – auth protocol;
  • auth_passphrase – auth passphrase;
  • priv_protocol – priv protocol;
  • priv_passphrase – priv passphrase.

Other arguments:

  • manager custom instance of manager class;
  • device_cls custom device class, will be used instead of autolookup.
snmp_orm.device.maybe_oid_to_str(objectId)[source]

Convert given OID to string if needed.

fields Module

Implement fields here.

snmp_orm.fields.Field[source]
snmp_orm.fields.FromDictField[source]

Convert data to dict value

class snmp_orm.fields.FromDictMapper[source]

Bases: snmp_orm.fields.Mapper

form(var)[source]
toAsn1(var)[source]
snmp_orm.fields.FromDictTableField[source]

Convert data to dict value

class snmp_orm.fields.Group(**fields)[source]

Bases: object

snmp_orm.fields.IPAddressField[source]

Convert data to IP

class snmp_orm.fields.IPAddressMapper[source]

Bases: snmp_orm.fields.Mapper

form(var)[source]
toAsn1(var)[source]
snmp_orm.fields.IPAddressTableField[source]

Convert data to IP

snmp_orm.fields.IntegerField[source]

Convert data to int

class snmp_orm.fields.IntegerMapper[source]

Bases: snmp_orm.fields.Mapper

form(var)[source]
toAsn1(var)[source]
snmp_orm.fields.IntegerTableField[source]

Convert data to int

snmp_orm.fields.LongIntegerField[source]

Convert data to long

class snmp_orm.fields.LongIntegerMapper[source]

Bases: snmp_orm.fields.Mapper

form(var)[source]
toAsn1(var)[source]
snmp_orm.fields.LongIntegerTableField[source]

Convert data to long

snmp_orm.fields.MacField[source]

Convert data to MAC

class snmp_orm.fields.MacMapper[source]

Bases: snmp_orm.fields.Mapper

form(var)[source]
toAsn1(var)[source]
snmp_orm.fields.MacTableField[source]

Convert data to MAC

class snmp_orm.fields.Mapper[source]

Bases: object

form(var)[source]

Form method must convert pyasn1 format to base python objects

toAsn1(var)[source]

toAsn1 method must convert base python objects to pyasn1 format

snmp_orm.fields.OIDField[source]

Convert data to OID tuple

class snmp_orm.fields.OIDMapper[source]

Bases: snmp_orm.fields.Mapper

form(var)[source]
toAsn1(var)[source]
snmp_orm.fields.OIDTableField[source]

Convert data to OID tuple

snmp_orm.fields.SingleValueField[source]
class snmp_orm.fields.TableField[source]

Bases: object

load_many(adapter)[source]
load_one(adapter, key)[source]
prepare_many(vars)[source]
set_one(adapter, key, value)[source]
snmp_orm.fields.TableValueField[source]
snmp_orm.fields.TimeTickField[source]

Convert data to timedelta

class snmp_orm.fields.TimeTickMapper[source]

Bases: snmp_orm.fields.IntegerMapper

form(var)[source]
toAsn1(var)[source]
snmp_orm.fields.TimeTickTableField[source]

Convert data to timedelta

snmp_orm.fields.UnicodeField[source]

Convert data to unicode

class snmp_orm.fields.UnicodeMapper[source]

Bases: snmp_orm.fields.Mapper

form(var)[source]
toAsn1(var)[source]
snmp_orm.fields.UnicodeTableField[source]

Convert data to unicode

snmp_orm.fields.format_key(key)[source]

settings Module

Implement device settings.

class snmp_orm.settings.BaseSettings(**kwargs)[source]

Bases: snmp_orm.settings.NewBase

allowed_keys = ('host', 'port', 'version', 'use_bulk', 'bulk_rows')
allowed_keys_set = set(['use_bulk', 'host', 'version', 'port', 'bulk_rows'])
default_values = {'use_bulk': True, 'version': <function <lambda> at 0x1d0b2a8>, 'port': 161, 'bulk_rows': 50}
prepare_kwargs()[source]
set_default(key, default)[source]
class snmp_orm.settings.SettingsMeta[source]

Bases: type

class snmp_orm.settings.SnmpV2Settings(**kwargs)[source]

Bases: snmp_orm.settings.BaseSettings

allowed_keys = ('community', 'host', 'port', 'version', 'use_bulk', 'bulk_rows')
allowed_keys_set = set(['community', 'bulk_rows', 'host', 'version', 'use_bulk', 'port'])
default_values = {'use_bulk': True, 'version': <function <lambda> at 0x1d0b2a8>, 'port': 161, 'community': 'public', 'bulk_rows': 50}
class snmp_orm.settings.SnmpV3Settings(**kwargs)[source]

Bases: snmp_orm.settings.BaseSettings

allowed_keys = ('sec_name', 'sec_level', 'auth_protocol', 'auth_passphrase', 'priv_protocol', 'priv_passphrase', 'host', 'port', 'version', 'use_bulk', 'bulk_rows')
allowed_keys_set = set(['version', 'sec_name', 'sec_level', 'port', 'auth_protocol', 'host', 'priv_protocol', 'bulk_rows', 'use_bulk', 'priv_passphrase', 'auth_passphrase'])
default_values = {'bulk_rows': 50, 'version': <function <lambda> at 0x1d0b2a8>, 'use_bulk': True, 'port': 161}

utils Module

Some useful tools.

snmp_orm.utils.find_classes(cls, packages)[source]

Find all subclass of given class.

snmp_orm.utils.get_all_parents(cls)[source]
snmp_orm.utils.load_modules(packages)[source]

Find all attributes of given modules.

snmp_orm.utils.oid_to_str(t)[source]
snmp_orm.utils.str_to_oid(s)[source]
snmp_orm.utils.symbol_by_name(name, aliases={}, imp=None, package=None, sep='.', default=None, **kwargs)[source]

Get symbol by qualified name.

The name should be the full dot-separated path to the class:

modulename.ClassName

Example:

celery.concurrency.processes.TaskPool
                            ^- class name

or using ‘:’ to separate module and symbol:

celery.concurrency.processes:TaskPool

If aliases is provided, a dict containing short name/long name mappings, the name is looked up in the aliases first.

Examples:

>>> symbol_by_name("celery.concurrency.processes.TaskPool")
<class 'celery.concurrency.processes.TaskPool'>
>>> symbol_by_name("default", {
...     "default": "celery.concurrency.processes.TaskPool"})
<class 'celery.concurrency.processes.TaskPool'>

# Does not try to look up non-string names. >>> from celery.concurrency.processes import TaskPool >>> symbol_by_name(TaskPool) is TaskPool True

Project Versions

Table Of Contents

Previous topic

API Documentation

Next topic

adapters Package

This Page