summaryrefslogtreecommitdiffstats
path: root/tools/upgrade/1.3/migrate_sysv_simplename.py
diff options
context:
space:
mode:
authorSol Jerome <sol.jerome@gmail.com>2014-11-08 11:10:56 -0600
committerSol Jerome <sol.jerome@gmail.com>2014-11-08 11:10:56 -0600
commit5a9c685c53f13a8bf4dd55cf96ecf11d624d8fcf (patch)
treec3ca7c47ee79361cff53dc3f1198186e2df8d42d /tools/upgrade/1.3/migrate_sysv_simplename.py
parent6be5de9e8ed7e29d3763b36f870a2f470917f76d (diff)
parentad438f9e17decda2efca0e8974995a6d028f7788 (diff)
downloadbcfg2-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-xtools/upgrade/1.3/migrate_sysv_simplename.py51
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())