Use execReadlines in livemedia-creator
Log output from anaconda as it is received so that progress can be monitored.
This commit is contained in:
parent
cfe4777042
commit
9f702f5624
@ -51,7 +51,7 @@ from pylorax.imgutils import PartitionMount, mksparse, mkext4img, loop_detach
|
|||||||
from pylorax.imgutils import get_loop_name, dm_detach, mount, umount, Mount
|
from pylorax.imgutils import get_loop_name, dm_detach, mount, umount, Mount
|
||||||
from pylorax.imgutils import mksquashfs, mkqcow2, mktar, mkrootfsimg
|
from pylorax.imgutils import mksquashfs, mkqcow2, mktar, mkrootfsimg
|
||||||
from pylorax.imgutils import copytree
|
from pylorax.imgutils import copytree
|
||||||
from pylorax.executils import execWithRedirect, runcmd
|
from pylorax.executils import execWithRedirect, execReadlines, runcmd
|
||||||
from pylorax.monitor import LogMonitor
|
from pylorax.monitor import LogMonitor
|
||||||
from pylorax.mount import IsoMountpoint
|
from pylorax.mount import IsoMountpoint
|
||||||
|
|
||||||
@ -610,13 +610,13 @@ def novirt_install(opts, disk_img, disk_size, repo_url):
|
|||||||
args += ["--remotelog", "%s:%s" % (log_monitor.host, log_monitor.port)]
|
args += ["--remotelog", "%s:%s" % (log_monitor.host, log_monitor.port)]
|
||||||
|
|
||||||
# Make sure anaconda has the right product and release
|
# Make sure anaconda has the right product and release
|
||||||
os.environ["ANACONDA_PRODUCTNAME"] = opts.project
|
|
||||||
os.environ["ANACONDA_PRODUCTVERSION"] = opts.releasever
|
|
||||||
log.info("Running anaconda.")
|
log.info("Running anaconda.")
|
||||||
try:
|
try:
|
||||||
execWithRedirect("anaconda", args, raise_err=True, reset_lang=False,
|
for line in execReadlines("anaconda", args, reset_lang=False,
|
||||||
env_add={"ANACONDA_PRODUCTNAME": opts.project, "ANACONDA_PRODUCTVERSION": opts.releasever},
|
env_add={"ANACONDA_PRODUCTNAME": opts.project,
|
||||||
callback=lambda p: not novirt_log_check(log_monitor.server.log_check, p))
|
"ANACONDA_PRODUCTVERSION": opts.releasever},
|
||||||
|
callback=lambda p: not novirt_log_check(log_monitor.server.log_check, p)):
|
||||||
|
log.info(line)
|
||||||
|
|
||||||
# Make sure the new filesystem is correctly labeled
|
# Make sure the new filesystem is correctly labeled
|
||||||
args = ["-e", "/proc", "-e", "/sys", "-e", "/dev",
|
args = ["-e", "/proc", "-e", "/sys", "-e", "/dev",
|
||||||
@ -627,12 +627,15 @@ def novirt_install(opts, disk_img, disk_size, repo_url):
|
|||||||
with PartitionMount(disk_img) as img_mount:
|
with PartitionMount(disk_img) as img_mount:
|
||||||
if img_mount and img_mount.mount_dir:
|
if img_mount and img_mount.mount_dir:
|
||||||
execWithRedirect("setfiles", args, root=img_mount.mount_dir)
|
execWithRedirect("setfiles", args, root=img_mount.mount_dir)
|
||||||
except subprocess.CalledProcessError as e:
|
except (subprocess.CalledProcessError, OSError) as e:
|
||||||
log.error("Running anaconda failed: %s", e)
|
log.error("Running anaconda failed: %s", e)
|
||||||
raise InstallError("novirt_install failed")
|
raise InstallError("novirt_install failed")
|
||||||
finally:
|
finally:
|
||||||
log_monitor.shutdown()
|
log_monitor.shutdown()
|
||||||
|
|
||||||
|
# If anaconda failed there may be things needing cleanup
|
||||||
|
execWithRedirect("anaconda-cleanup", [])
|
||||||
|
|
||||||
# Move the anaconda logs over to a log directory
|
# Move the anaconda logs over to a log directory
|
||||||
log_dir = os.path.abspath(os.path.dirname(opts.logfile))
|
log_dir = os.path.abspath(os.path.dirname(opts.logfile))
|
||||||
log_anaconda = joinpaths(log_dir, "anaconda")
|
log_anaconda = joinpaths(log_dir, "anaconda")
|
||||||
@ -642,11 +645,7 @@ def novirt_install(opts, disk_img, disk_size, repo_url):
|
|||||||
shutil.copy2(l, log_anaconda)
|
shutil.copy2(l, log_anaconda)
|
||||||
os.unlink(l)
|
os.unlink(l)
|
||||||
|
|
||||||
if opts.make_iso or opts.make_fsimage:
|
if not opts.make_iso and not opts.make_fsimage:
|
||||||
umount(ROOT_PATH)
|
|
||||||
else:
|
|
||||||
# If anaconda failed the disk image may still be in use by dm
|
|
||||||
execWithRedirect("anaconda-cleanup", [])
|
|
||||||
dm_name = os.path.splitext(os.path.basename(disk_img))[0]
|
dm_name = os.path.splitext(os.path.basename(disk_img))[0]
|
||||||
dm_path = "/dev/mapper/"+dm_name
|
dm_path = "/dev/mapper/"+dm_name
|
||||||
if os.path.exists(dm_path):
|
if os.path.exists(dm_path):
|
||||||
|
Loading…
Reference in New Issue
Block a user