summaryrefslogtreecommitdiff
path: root/tools/check.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/check.py')
-rw-r--r--tools/check.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/tools/check.py b/tools/check.py
new file mode 100644
index 0000000..efa2449
--- /dev/null
+++ b/tools/check.py
@@ -0,0 +1,91 @@
+import ConfigParser, os, getopt, sys, config
+
+ini = ConfigParser.ConfigParser()
+
+# Parse parameters
+def get_opts(argv):
+ try:
+ opts, args = getopt.getopt(argv,"ha:c:d:l",["conf=","action=","device=","list-devices"])
+ except getopt.GetoptError:
+ usage()
+ sys.exit(2)
+ for opt, arg in opts:
+ if opt == '-h':
+ return usage()
+ sys.exit()
+ elif opt in ("-l", "--list-devices"):
+ print "You have configured these devices: " + list_devices()
+ sys.exit()
+ elif opt in ("-a", "--action"):
+ config.action = arg
+ elif opt in ("-c", "--conf"):
+ config.configfile = arg
+ elif opt in ("-d", "--device"):
+ config.device = arg
+
+# Check parameters for errors
+def check_opts():
+ get_opts(sys.argv[1:])
+ if not config.action:
+ print "Error: No action has been specified. Use -a."
+ return usage()
+ sys.exit(2)
+ if not config.action == "pull" or config.action == "push":
+ print "Error: Action \"" + config.action + "\" is invalid."
+ return usage()
+ sys.exit(2)
+ if not config.device:
+ print "Error: No device has been specified. Use -d."
+ return usage()
+ sys.exit(2)
+ if config.device:
+ load_config(config.configfile)
+ if not ini.has_section(config.device):
+ print "Error: Device \"" + config.device + "\" not configured. Add it to\"" + config.configfile + "."
+ sys.exit(2)
+
+# Load provided config file or use default
+def load_config(configfile):
+ if not configfile:
+ config.configfile = "/etc/sync-rpi.conf"
+ try:
+ ini.read([config.configfile])
+ except:
+ sys.exit(2)
+
+# Check if configuration file is sane
+def check_config(configfile):
+ get_opts(sys.argv[1:])
+ load_config(config.configfile)
+ error = 0
+ #print config.configfile
+ #print ini.items('config')
+ #print ini.items('alcor-01')
+ #print config.options_config
+ #print config.options_device
+ for option in config.options_config:
+ if not ini.has_option('config', option):
+ print "Error: Option \"" + option + "\" not set in [config]."
+ error = 1
+ for section in ini.sections():
+ for option in config.options_device:
+ if section != 'config' and not ini.has_option(section, option):
+ print "Error: Option " + option + " not set in [" + section + "]."
+ error = 1
+
+ if error == 1:
+ sys.exit(2)
+
+# List all devices defined in config.configfile
+def list_devices():
+ load_config(config.configfile)
+ return " ".join(ini.sections()[1:])
+
+# Prin usage
+def usage():
+ print """Usage: sync-rpi-config -a ACTION -d DEVICE [ -c [FILE] ] [ -l ]
+ Options
+ -a, --action ACTION can be either pull or push. You are pushing config from you workstation to device or pulling it back.
+ -d, --device DEVICE is set in configuration file. It is the machine you wish to push config to or pull from.
+ -c, --conf Path to configuration file.
+ -l, --list-devices List all devices defined in current configuration file."""