[master 1/2] Add --tmpdir to parse-kickstart for testing
bcl
installerbot-noreply at redhat.com
Tue Mar 31 00:10:53 UTC 2015
From: "Brian C. Lane" <bcl at redhat.com>
This will allow the /tmp directory to be overridden for testing
purposes. Pass --tmpdir /path/to/tmp/ to override it. Note that the =
syntax is *not* supported, they must be separate arguments.
This also changes the ifcfg files to have their keys sorted so that
testing the output is easier.
---
dracut/parse-kickstart | 39 ++++++++++++++++++++++++++-------------
1 file changed, 26 insertions(+), 13 deletions(-)
diff --git a/dracut/parse-kickstart b/dracut/parse-kickstart
index 9a62df2..ed63340 100755
--- a/dracut/parse-kickstart
+++ b/dracut/parse-kickstart
@@ -42,6 +42,8 @@ from collections import OrderedDict
# Default logging: none
log = logging.getLogger('parse-kickstart').addHandler(logging.NullHandler())
+TMPDIR = "/tmp"
+
# Helper function for reading simple files in /sys
def readsysfile(f):
'''Return the contents of f, or "" if missing.'''
@@ -134,7 +136,7 @@ class DriverDisk(commands.driverdisk.F14_DriverDisk):
# disk sources cannot be added to cmdline because the initial
# driver-update run has already finished.
if dd_disk:
- with open("/tmp/dd_args_ks", "w") as f:
+ with open(TMPDIR+"/dd_args_ks", "w") as f:
f.write(" ".join(dd_disk))
# network sources can be added to the existing cmdline, they
@@ -326,7 +328,7 @@ def ksnet_to_dracut(args, lineno, net, bootdev=False):
if net.device:
line.append("bootdev=%s" % net.device)
# touch /tmp/net.ifaces to make sure dracut brings up network
- open("/tmp/net.ifaces", "a")
+ open(TMPDIR+"/net.ifaces", "a")
if net.essid or net.wepkey or net.wpakey:
# TODO: make dracut support wireless? (do we care?)
@@ -358,9 +360,9 @@ def ksnet_to_ifcfg(net, filename=None):
return
ifcfg = dict()
if filename is None:
- filename = "/tmp/ifcfg/ifcfg-%s" % dev
- if not os.path.isdir("/tmp/ifcfg"):
- os.makedirs("/tmp/ifcfg")
+ filename = TMPDIR+"/ifcfg/ifcfg-%s" % dev
+ if not os.path.isdir(TMPDIR+"/ifcfg"):
+ os.makedirs(TMPDIR+"/ifcfg")
ifcfg['DEVICE'] = dev
hwaddr = readsysfile("/sys/class/net/%s/address" % dev)
if "ifname={0}:{1}".format(dev, hwaddr).upper() in open("/proc/cmdline").read().upper():
@@ -412,8 +414,8 @@ def ksnet_to_ifcfg(net, filename=None):
# TODO: dhcpclass, ethtool, essid/wepkey/wpakay, etc.
if net.bootProto == 'dhcp':
- srcpath = "/tmp/dhclient.%s.lease" % dev
- dstdir = "/tmp/ifcfg-leases"
+ srcpath = TMPDIR+"/dhclient.%s.lease" % dev
+ dstdir = TMPDIR+"/ifcfg-leases"
dstpath = "%s/dhclient-%s-%s.lease" % (dstdir, ifcfg['UUID'], dev)
if os.path.exists(srcpath):
if not os.path.isdir(dstdir):
@@ -441,7 +443,7 @@ def ksnet_to_ifcfg(net, filename=None):
'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
}
add_s390_settings(slave, slave_ifcfg)
- slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
+ slave_filename = TMPDIR+"/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
log.info("writing ifcfg %s for slave %s of bond %s", slave_filename, slave, dev)
write_ifcfg(slave_filename, slave_ifcfg)
@@ -465,7 +467,7 @@ def ksnet_to_ifcfg(net, filename=None):
if cfg:
slave_ifcfg['TEAM_PORT_CONFIG'] = "'" + cfg + "'"
- slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
+ slave_filename = TMPDIR+"/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
log.info("writing ifcfg %s for slave %s of team %s", slave_filename, slave, dev)
write_ifcfg(slave_filename, slave_ifcfg)
@@ -502,7 +504,7 @@ def ksnet_to_ifcfg(net, filename=None):
'BRIDGE' : dev,
'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
}
- slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
+ slave_filename = TMPDIR+"/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
log.info("writing ifcfg %s for slave %s of bridge %s", slave_filename, slave, dev)
write_ifcfg(slave_filename, slave_ifcfg)
@@ -515,7 +517,7 @@ def ksnet_to_ifcfg(net, filename=None):
ifcfg['NAME'] = "VLAN connection %s" % interface_name
ifcfg['DEVICE'] = interface_name
ifcfg['PHYSDEV'] = dev
- filename = "/tmp/ifcfg/ifcfg-%s" % interface_name
+ filename = TMPDIR+"/ifcfg/ifcfg-%s" % interface_name
log.info("writing ifcfg %s for %s", filename, dev)
if write_ifcfg(filename, ifcfg):
@@ -525,7 +527,7 @@ def write_ifcfg(filename, ifcfg):
try:
with open(filename, "w") as f:
f.write('# Generated by parse-kickstart\n')
- for k,v in ifcfg.items():
+ for k,v in sorted(ifcfg.items()):
f.write("%s=%s\n" % (k,v))
except IOError as e:
log.error("can't write %s: %s", filename, e)
@@ -543,13 +545,24 @@ def process_kickstart(ksfile):
parser.readKickstart(processed_file)
except KickstartError as e:
log.error(str(e))
- with open("/tmp/ks.info", "a") as f:
+ with open(TMPDIR+"/ks.info", "a") as f:
f.write('parsed_kickstart="%s"\n' % processed_file)
log.info("finished parsing kickstart")
return processed_file, handler.output
if __name__ == '__main__':
log = init_logger()
+
+ # Override tmp directory path for testing. Don't use argparse because we don't want to
+ # include that dependency in the initramfs. Pass '--tmpdir /path/to/tmp/'
+ if "--tmpdir" in sys.argv:
+ idx = sys.argv.index("--tmpdir")
+ try:
+ sys.argv.pop(idx)
+ TMPDIR = os.path.normpath(sys.argv.pop(idx))
+ except IndexError:
+ pass
+
for path in sys.argv[1:]:
outfile, output = process_kickstart(path)
for line in filter(None, output):
--
To view this commit on github, visit https://github.com/rhinstaller/anaconda/commit/2d14678931a83942a784c437fd0d07242ea54550
More information about the anaconda-patches
mailing list