blob: ad0b184ef13152da2e3bb53a375d437036102ffe [file] [log] [blame]
Steve McIntyref1c04f92014-12-16 18:23:15 +00001import logging
2import os
3from db.db import VlanDB
4from errors import CriticalError, InputError, ConfigError, SocketError
5
6class 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 McIntyre091e2ac2014-12-16 19:20:07 +000017 # 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 McIntyref1c04f92014-12-16 18:23:15 +000020 print command
21 print data
22 ret = {}
23 try:
Steve McIntyre091e2ac2014-12-16 19:20:07 +000024 if command == 'db.all_switches':
Steve McIntyref1c04f92014-12-16 18:23:15 +000025 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