blob: ad0b184ef13152da2e3bb53a375d437036102ffe [file] [log] [blame]
import logging
import os
from db.db import VlanDB
from errors import CriticalError, InputError, ConfigError, SocketError
class VlanUtil:
"""VLANd utility functions"""
def get_switch_driver(self, switch, config):
logging.debug("Trying to find a driver for %s" % switch)
driver = config.switches[switch].driver
logging.debug("Driver: %s" % driver)
module = __import__("drivers.%s" % driver, fromlist=[driver])
class_ = getattr(module, driver)
return class_(switch)
# Simple helper wrapper for all the read-only database queries
def perform_db_query(self, db, command, data):
print 'perform_db_query'
print command
print data
ret = {}
try:
if command == 'db.all_switches':
ret = db.all_switches()
elif command == 'db.all_ports':
ret = db.all_ports()
elif command == 'db.all_vlans':
ret = db.all_vlans()
elif command == 'db.get_switch_by_id':
ret = db.get_switch_by_id(data['switch_id'])
elif command == 'db.get_switch_id_by_name':
ret = db.get_switch_id_by_name(data['name'])
elif command == 'db.get_switch_name_by_id':
ret = db.get_switch_name_by_id(data['switch_id'])
elif command == 'db.get_port_by_id':
ret = db.get_port_by_id(data['port_id'])
elif command == 'db.get_ports_by_switch':
ret = db.get_ports_by_switch(data['switch_id'])
elif command == 'db.get_port_by_switch_and_name':
ret = db.get_port_by_switch_and_name(data['switch_id'], data['name'])
elif command == 'db.get_current_vlan_id_by_port':
ret = db.get_current_vlan_id_by_port(data['port_id'])
elif command == 'db.get_base_vlan_id_by_port':
ret = db.get_base_vlan_id_by_port(data['port_id'])
elif command == 'db.get_ports_by_current_vlan':
ret = db.get_ports_by_current_vlan(data['vlan_id'])
elif command == 'db.get_ports_by_base_vlan':
ret = db.get_ports_by_base_vlan(data['vlan_id'])
elif command == 'db.get_vlan_by_id':
ret = db.get_vlan_by_id(data['vlan_id'])
elif command == 'db.get_vlan_id_by_name':
ret = db.get_vlan_id_by_name(data['name'])
elif command == 'db.get_vlan_id_by_tag':
ret = db.get_vlan_id_by_name(data['tag'])
elif command == 'db.get_vlan_name_by_id':
ret = db.get_vlan_name_by_id(data['vlan_id'])
else:
raise InputError("Unknown query command \"%s\"" % command)
except:
raise InputError("Invalid input in query")
return ret