From f706f9f84a751369ac75891c26ab10f8f58717cd Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Mon, 16 Jul 2012 11:36:36 -0400 Subject: [PATCH] initial checkin --- config/sfa-config | 168 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100755 config/sfa-config diff --git a/config/sfa-config b/config/sfa-config new file mode 100755 index 00000000..29aa179c --- /dev/null +++ b/config/sfa-config @@ -0,0 +1,168 @@ +#!/usr/bin/python +# +# Script for basic access to the SFA configuration file store. +# +# $Id$ +# + +import sys +import os +import fcntl +import getopt +import signal +from sfa.util.config import Config + + +def usage(): + print """ +Script to access the SFA configuration file store. + +Usage: %s [OPTION]... [FILES] + Conversion: + + --shell Output shell configuration file + --python Output Python configuration file + --php Output PHP configuration file + + Information: + + --variables List names of all variables + --packages List names of all packages + --comps List comps.xml from configuration + + Basic variable value manipulation: + + --category= Category identifier + --variable= Variable identifier + --value= Variable value + + Basic package list manipulation: + + --group= Package group identifier + --package= Package name + --type= Package type + + Miscellaneous: + + -h, --help This message + -s, --save Save changes to first configuration file +""".lstrip() % sys.argv[0] + sys.exit(1) + + +def deprecated (message): + print "%s: deprecated usage"%sys.argv[0] + print message + sys.exit(1) + +def main(): + config = Config() + fileobjs = [] + output = None + category = {} + variable = {} + group = {} + package = {} + save = False + + # Standard options + shortopts = "hs:" + longopts = ["shell", "bash", "python", + "php", + "xml", + "variables", + "packages", + "groups", + "comps", + "category=", "variable=", "value=", + "group=", "package=", "type=", + "help", + "save="] + + try: + (opts, argv) = getopt.gnu_getopt(sys.argv[1:], shortopts, longopts) + except Exception, err: + sys.stderr.write("Error: " + str(err) + os.linesep) + sys.exit(1) + + for (opt, optval) in opts: + if opt == "--shell" or \ + opt == "--bash": + output = config.output_shell + elif opt == "--python": + output = config.output_python + elif opt == "--php": + output = config.output_php + elif opt == "--xml": + output = config.output_xml + elif opt == "--variables": + output = config.output_variables + elif opt == "--packages": + deprecated("option --packages deprecated -- use .lst files instead") + elif opt == "--groups": + deprecated("option --groups deprecated -- use .lst files instead") + elif opt == "--comps": + deprecated("option --comps deprecated -- use .lst files instead") + elif opt == "--category": + category['id'] = optval + elif opt == "--variable": + variable['id'] = optval + elif opt == "--value": + variable['value'] = optval + elif opt == "--group": +# group['id'] = optval + deprecated("option --group deprecated -- use .lst files instead") + elif opt == "--package": +# package['name'] = optval + deprecated("option --package deprecated -- use .lst files instead") + elif opt == "--type": + package['type'] = optval + elif opt == '-s' or opt == "--save": + if not optval: + usage() + print 'parsed save option',optval + save = optval + elif opt == '-h' or opt == "--help": + usage() + + # Try the default + if not argv: + argv = ["/etc/sfa/sfa_config"] + + # Merge all files + for file in argv: + try: + config.load(file) + except IOError: + pass + except Exception, err: + sys.stderr.write("Error: %s: %s" % (file, str(err)) + os.linesep) + sys.exit(1) + + # --category, --variable, --value + if category.has_key('id') and variable.has_key('id'): + if variable.has_key('value'): + config.set(category['id'], variable['id'], variable['value']) + else: + value = config.get(category['id'], variable['id']) + print value + + # --shell, --php, --xml + if output is not None: + sys.stdout.write(output()) + + # --save + if save: + # create directory if needed + # so that plc.d/{api,postgres} can create configs/site.xml + dirname = os.path.dirname (save) + if (not os.path.exists (dirname)): + os.makedirs(dirname,0755) + if (not os.path.exists (dirname)): + print "Cannot create dir %s - exiting" % dirname + sys.exit(1) + config.save(save) + + +if __name__ == '__main__': + main() -- 2.43.0