From 42e619c585de45e5e4e16ae3746efb7db9f90b1e Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Tue, 5 Jun 2012 17:34:29 -0400 Subject: re-rationalized service modes to make them more consistent and granular --- tools/upgrade/1.3/service_modes.py | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 tools/upgrade/1.3/service_modes.py (limited to 'tools/upgrade') diff --git a/tools/upgrade/1.3/service_modes.py b/tools/upgrade/1.3/service_modes.py new file mode 100755 index 000000000..b658fb51e --- /dev/null +++ b/tools/upgrade/1.3/service_modes.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import lxml.etree +import Bcfg2.Options + +def main(): + opts = dict(repo=Bcfg2.Options.SERVER_REPOSITORY) + setup = Bcfg2.Options.OptionParser(opts) + setup.parse(sys.argv[1:]) + + for bfile in glob.glob(os.path.join(setup['repo'], "Bundler", "*")): + bdata = lxml.etree.parse(bfile) + changed = False + for svc in bdata.xpath("//Service|//BoundService"): + if "mode" not in svc.attrib: + continue + mode = svc.get("mode") + del svc.attrib["mode"] + if mode not in ["default", "supervised", "interactive_only", + "manual"]: + print("Unrecognized mode on Service:%s: %s. Assuming default" % + (svc.get("name"), mode)) + mode = "default" + if mode == "default" or mode == "supervised": + svc.set("restart", "true") + svc.set("install", "true") + elif mode == "interactive_only": + svc.set("restart", "interactive") + svc.set("install", "true") + elif mode == "manual": + svc.set("restart", "false") + svc.set("install", "false") + changed = True + if changed: + print("Writing %s" % bfile) + try: + open(bfile, "w").write(lxml.etree.tostring(bdata)) + except IOError: + err = sys.exc_info()[1] + print("Could not write %s: %s" % (bfile, err)) + +if __name__ == '__main__': + sys.exit(main()) -- cgit v1.2.3-1-g7c22