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