from traps.models import *

import subprocess

##############################################################################

def translate_trapoid_to_name(oid):
	try:
		# FIXME: Mehrere erlauben, dann aber nur einer aktiv
		return CfgTrap.objects.get(trapoid=oid).trapname
	except CfgTrap.DoesNotExist:
		return None
	except CfgTrap.MultipleObjectsReturned:
		# Should not happen
		return None


##############################################################################

def call_snmptranslate(oid, allmibs=False):
	cmdline = ['snmptranslate', ]
	if allmibs:
		cmdline.append('-mALL')
	cmdline.append(oid)

	try:
		cmd = subprocess.Popen(cmdline, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
		(stdout, stderr) = cmd.communicate()
	except OSError:
		return None

	return stdout.rstrip()


def external_snmptranslate(oid):
	allmibs=False
	if oid.startswith('.1.3.6.1.4.1'):
		allmibs=True

	oidname = call_snmptranslate(oid, allmibs)

	if oidname.count('.') > 1 and allmibs==False:
		oidname = call_snmptranslate(oid, True)

	return oidname