[PATCH 1/3] Add support for externally triggered reconfig mode (#1110439)
Martin Kolman
mkolman at redhat.com
Wed Jul 1 12:01:54 UTC 2015
Make it possible to trigger the already present reconfig mode by
by creating the /etc/reconfigSys file, enabling the respektive Initial Setup
service and rebooting.
Resolves: rhbz#1110439
Signed-off-by: Martin Kolman <mkolman at redhat.com>
---
initial_setup/__main__.py | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/initial_setup/__main__.py b/initial_setup/__main__.py
index d9e411f..120ae0c 100644
--- a/initial_setup/__main__.py
+++ b/initial_setup/__main__.py
@@ -8,15 +8,19 @@ from pyanaconda.users import Users
from initial_setup.post_installclass import PostInstallClass
from initial_setup import initial_setup_log
from pyanaconda import iutil
+from pykickstart.constants import FIRSTBOOT_RECONFIG
INPUT_KICKSTART_PATH = "/root/anaconda-ks.cfg"
OUTPUT_KICKSTART_PATH = "/root/initial-setup-ks.cfg"
+RECONFIG_FILE = "/etc/reconfigSys"
# set root to "/", we are now in the installed system
iutil.setSysroot("/")
signal.signal(signal.SIGINT, signal.SIG_IGN)
+external_reconfig = os.path.exists(RECONFIG_FILE)
+
initial_setup_log.init()
log = logging.getLogger("initial-setup")
@@ -27,6 +31,9 @@ else:
log.debug("display mode detected: %s", mode)
+if external_reconfig:
+ log.debug("running in externally triggered reconfig mode")
+
if mode == "gui":
# We need this so we can tell GI to look for overrides objects
# also in anaconda source directories
@@ -94,6 +101,11 @@ except pykickstart.errors.KickstartError as kserr:
log.exception("kickstart parsing failed: %s" % kserr)
sys.exit(1)
+if external_reconfig:
+ # set the reconfig flag in kickstart so that
+ # relevant spokes show up
+ data.firstboot.firstboot = FIRSTBOOT_RECONFIG
+
if mode == "gui":
try:
# Try to import IS gui specifics
@@ -175,8 +187,22 @@ for section in sections:
log.info("executing addons")
data.addons.execute(None, data, None, u)
+if external_reconfig:
+ # prevent the reconfig flag from being written out,
+ # to prevent the reconfig mode from being enabled
+ # without the /etc/reconfigSys file being present
+ data.firstboot.firstboot = None
+
# Write the kickstart data to file
log.info("writing the Initial Setup kickstart file %s", OUTPUT_KICKSTART_PATH)
with open(OUTPUT_KICKSTART_PATH, "w") as f:
f.write(str(data))
log.info("finished writing the Initial Setup kickstart file")
+
+# Remove the reconfig file, if any - otherwise the reconfig mode
+# would start again next time the Initial Setup service is enabled
+if external_reconfig and os.path.exists(RECONFIG_FILE):
+ log.debug("removing the reconfig file")
+ os.remove(RECONFIG_FILE)
+ log.debug("the reconfig file has been removed")
+
--
2.4.3
More information about the anaconda-patches
mailing list