Fix systemctl command (#1478247)

When multiple units are passed to systemctl and one fails it doesn't
finish the others. Change the template command to call systemctl for
each unit individually.

This also removes the lvm2-activation-generator in runtime-cleanup.tmpl

Resolves: rhbz#1478247
This commit is contained in:
Brian C. Lane 2017-08-09 17:56:16 -07:00
parent 1b29041089
commit 5238b9cd18
2 changed files with 12 additions and 7 deletions

View File

@ -43,6 +43,9 @@ systemctl mask rhel-configure.service rhel-loadmodules.service \
rhel-wait-storage.service media.mount \
systemd-tmpfiles-clean.service systemd-tmpfiles-clean.timer
## remove because it cannot be disabled
remove usr/lib/systemd/system-generators/lvm2-activation-generator
## Make logind activate anaconda-shell@.service on switch to empty VT
symlink anaconda-shell@.service lib/systemd/system/autovt@.service
replace "#ReserveVT=6" "ReserveVT=2" etc/systemd/logind.conf

View File

@ -642,11 +642,13 @@ class LoraxTemplateRunner(object):
logger.debug("systemctl: no units given for %s, ignoring", cmd)
return
self.mkdir("/run/systemd/system") # XXX workaround for systemctl bug
systemctl = ('systemctl', '--root', self.outroot, '--no-reload',
'--quiet', cmd)
systemctl = ['systemctl', '--root', self.outroot, '--no-reload',
cmd]
# When a unit doesn't exist systemd aborts the command. Run them one at a time.
# XXX for some reason 'systemctl enable/disable' always returns 1
try:
cmd = systemctl + units
runcmd(cmd)
except CalledProcessError:
pass
for unit in units:
try:
cmd = systemctl + [unit]
runcmd(cmd)
except CalledProcessError:
pass