#!/usr/bin/env python # # Copyright (c) 2013 Matthew Wall # # See the file LICENSE.txt for your full rights. # """Command line utility for configuring devices.""" import sys import syslog import weecfg def main(): syslog.openlog('wee_device', syslog.LOG_PID | syslog.LOG_CONS) syslog.setlogmask(syslog.LOG_UPTO(syslog.LOG_INFO)) # Load the configuration file config_fn, config_dict = weecfg.read_config(None, sys.argv[1:]) print 'Using configuration file %s' % config_fn try: # Find the device type device_type = config_dict['Station']['station_type'] driver = config_dict[device_type]['driver'] except KeyError, e: sys.exit("No configuration for device %s" % e) # Try to load the driver device = None try: __import__(driver) driver_module = sys.modules[driver] loader_function = getattr(driver_module, 'configurator_loader') device = loader_function(config_dict) driver_name = driver_module.DRIVER_NAME driver_vers = driver_module.DRIVER_VERSION \ if hasattr(driver_module, 'DRIVER_VERSION') else '?' print 'Using %s driver version %s (%s)' % ( driver_name, driver_vers, driver) except AttributeError, e: msg = "The driver %s does not include a configuration tool" % driver syslog.syslog(syslog.LOG_INFO, "%s: %s" % (msg, e)) exit(0) except Exception, e: msg = "Cannot load configurator for %s" % device_type syslog.syslog(syslog.LOG_ERR, "%s: %s" % (msg, e)) print msg exit(1) device.configure(config_dict) if __name__ == "__main__": main()