| 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 |
| |