Can you put this sctipt somewhere in the git tree? (misc dir or
something)
Thanks!
Wed, Jul 25, 2012 at 12:47:29PM CEST, rpazdera(a)redhat.com wrote:
Hi!
In the last patch I changed the "netdevice" in netconfig to
"interface".
This patch will probably break all your recipes, so I decided to make
a sipmle script, that you can use to convert your recipes automatically
to the new conventions.
Make sure you backup the recipes first (just in case)!
Radek :)
#!/usr/bin/env python
"""
Recipe converter
This script will help you convert your old recipes with the
outdated conventions that are now unsupported in LNST.
You can pass a list of files or dirs to it and it will
remove all recipe-evals and change netdevices in netconfig
to interfaces.
Copyright 2012 Red Hat, Inc.
Licensed under the GNU General Public License, version 2 as
published by the Free Software Foundation; see COPYING for details.
"""
__author__ = """
rpazdera(a)redhat.com (Radek Pazdera)
"""
import sys
import os
import re
from xml.dom.minidom import parse
def change_netdev_to_iface(dom):
configs = dom.getElementsByTagName("netconfig")
for config in configs:
netdevs = config.getElementsByTagName("netdevice")
for dev in netdevs:
dev.tagName = "interface"
def remove_recipe_eval(dom):
opts = dom.getElementsByTagName("option")
for opt in opts:
if opt.hasAttribute("type"):
opt_type = opt.getAttribute("type")
if opt_type == "recipe_eval":
opt.removeAttribute("type")
subscript = opt.getAttribute("value")
opt.setAttribute("value", "{$recipe%s}" % subscript)
def convert_recipe(file_path):
dom = parse(file_path)
change_netdev_to_iface(dom)
remove_recipe_eval(dom)
output = dom.toxml()
output = re.sub(r"<\?xml[^>]*\?>", "", output)
writer = open(file_path, "w")
writer.write(output)
writer.close()
def usage():
print "Usage: %s recipe1 recipe2 dir1 ..." % sys.argv[0]
def main():
if len(sys.argv) <= 1 or "-h" in sys.argv:
usage()
return 0
files = sys.argv[1:]
for file_path in files:
if os.path.isdir(file_path):
for root, dirs, file_names in os.walk(file_path):
for file_name in file_names:
if re.match(r"^.*\.xml$", file_name):
full_path = "%s/%s" % (root, file_name)
full_path = os.path.normpath(full_path)
print "Converting %s" % full_path
convert_recipe(full_path)
else:
print "Converting %s" % file_path
convert_recipe(file_path)
return 0
if __name__ == "__main__":
rv = main()
sys.exit(rv)
_______________________________________________
LNST-developers mailing list
LNST-developers(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/lnst-developers