Steve McIntyre | f1c04f9 | 2014-12-16 18:23:15 +0000 | [diff] [blame] | 1 | import logging |
| 2 | import os |
| 3 | from db.db import VlanDB |
| 4 | from errors import CriticalError, InputError, ConfigError, SocketError |
| 5 | |
| 6 | class VlanUtil: |
| 7 | """VLANd utility functions""" |
| 8 | |
| 9 | def get_switch_driver(self, switch, config): |
| 10 | logging.debug("Trying to find a driver for %s" % switch) |
| 11 | driver = config.switches[switch].driver |
| 12 | logging.debug("Driver: %s" % driver) |
| 13 | module = __import__("drivers.%s" % driver, fromlist=[driver]) |
| 14 | class_ = getattr(module, driver) |
| 15 | return class_(switch) |
| 16 | |
Steve McIntyre | 091e2ac | 2014-12-16 19:20:07 +0000 | [diff] [blame^] | 17 | # Simple helper wrapper for all the read-only database queries |
| 18 | def perform_db_query(self, db, command, data): |
| 19 | print 'perform_db_query' |
Steve McIntyre | f1c04f9 | 2014-12-16 18:23:15 +0000 | [diff] [blame] | 20 | print command |
| 21 | print data |
| 22 | ret = {} |
| 23 | try: |
Steve McIntyre | 091e2ac | 2014-12-16 19:20:07 +0000 | [diff] [blame^] | 24 | if command == 'db.all_switches': |
Steve McIntyre | f1c04f9 | 2014-12-16 18:23:15 +0000 | [diff] [blame] | 25 | ret = db.all_switches() |
| 26 | elif command == 'db.all_ports': |
| 27 | ret = db.all_ports() |
| 28 | elif command == 'db.all_vlans': |
| 29 | ret = db.all_vlans() |
| 30 | elif command == 'db.get_switch_by_id': |
| 31 | ret = db.get_switch_by_id(data['switch_id']) |
| 32 | elif command == 'db.get_switch_id_by_name': |
| 33 | ret = db.get_switch_id_by_name(data['name']) |
| 34 | elif command == 'db.get_switch_name_by_id': |
| 35 | ret = db.get_switch_name_by_id(data['switch_id']) |
| 36 | elif command == 'db.get_port_by_id': |
| 37 | ret = db.get_port_by_id(data['port_id']) |
| 38 | elif command == 'db.get_ports_by_switch': |
| 39 | ret = db.get_ports_by_switch(data['switch_id']) |
| 40 | elif command == 'db.get_port_by_switch_and_name': |
| 41 | ret = db.get_port_by_switch_and_name(data['switch_id'], data['name']) |
| 42 | elif command == 'db.get_current_vlan_id_by_port': |
| 43 | ret = db.get_current_vlan_id_by_port(data['port_id']) |
| 44 | elif command == 'db.get_base_vlan_id_by_port': |
| 45 | ret = db.get_base_vlan_id_by_port(data['port_id']) |
| 46 | elif command == 'db.get_ports_by_current_vlan': |
| 47 | ret = db.get_ports_by_current_vlan(data['vlan_id']) |
| 48 | elif command == 'db.get_ports_by_base_vlan': |
| 49 | ret = db.get_ports_by_base_vlan(data['vlan_id']) |
| 50 | elif command == 'db.get_vlan_by_id': |
| 51 | ret = db.get_vlan_by_id(data['vlan_id']) |
| 52 | elif command == 'db.get_vlan_id_by_name': |
| 53 | ret = db.get_vlan_id_by_name(data['name']) |
| 54 | elif command == 'db.get_vlan_id_by_tag': |
| 55 | ret = db.get_vlan_id_by_name(data['tag']) |
| 56 | elif command == 'db.get_vlan_name_by_id': |
| 57 | ret = db.get_vlan_name_by_id(data['vlan_id']) |
| 58 | else: |
| 59 | raise InputError("Unknown query command \"%s\"" % command) |
| 60 | |
| 61 | except: |
| 62 | raise InputError("Invalid input in query") |
| 63 | |
| 64 | return ret |
| 65 | |