diff options
author | Sol Jerome <sol.jerome@gmail.com> | 2014-11-08 11:10:56 -0600 |
---|---|---|
committer | Sol Jerome <sol.jerome@gmail.com> | 2014-11-08 11:10:56 -0600 |
commit | 5a9c685c53f13a8bf4dd55cf96ecf11d624d8fcf (patch) | |
tree | c3ca7c47ee79361cff53dc3f1198186e2df8d42d /tools/upgrade/1.3/migrate_sysv_simplename.py | |
parent | 6be5de9e8ed7e29d3763b36f870a2f470917f76d (diff) | |
parent | ad438f9e17decda2efca0e8974995a6d028f7788 (diff) | |
download | bcfg2-5a9c685c53f13a8bf4dd55cf96ecf11d624d8fcf.tar.gz bcfg2-5a9c685c53f13a8bf4dd55cf96ecf11d624d8fcf.tar.bz2 bcfg2-5a9c685c53f13a8bf4dd55cf96ecf11d624d8fcf.zip |
Merge branch 'SYSV-use-simplefile' of https://github.com/fennm/bcfg2 into maint
Diffstat (limited to 'tools/upgrade/1.3/migrate_sysv_simplename.py')
-rwxr-xr-x | tools/upgrade/1.3/migrate_sysv_simplename.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tools/upgrade/1.3/migrate_sysv_simplename.py b/tools/upgrade/1.3/migrate_sysv_simplename.py new file mode 100755 index 000000000..f6599756b --- /dev/null +++ b/tools/upgrade/1.3/migrate_sysv_simplename.py @@ -0,0 +1,51 @@ +#!/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:]) + + files = [] + for plugin in ['Pkgmgr']: + files.extend(glob.glob(os.path.join(setup['repo'], plugin, "*"))) + + for bfile in files: + bdata = lxml.etree.parse(bfile) + changed = False + + if not bdata.xpath("//@type='sysv'"): + print("%s doesn't contain any sysv packages, skipping" % bfile) + continue + + pkglist = bdata.getroot() + if pkglist.tag != "PackageList": + print("%s doesn't look like a PackageList, skipping" % bfile) + continue + + for pkg in bdata.xpath("//Package"): + if "simplename" in pkg.attrib: + pkg.set("simplefile", pkg.get("simplename")) + del pkg.attrib["simplename"] + changed = True + + # if we switched to simplefile, we also need to switch to uri + if changed and "url" in pkglist.attrib: + pkglist.set("uri", pkglist.get("url")) + del pkglist.attrib["url"] + + 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()) |