Author: lslezak
Date: Mon Sep 5 18:53:08 2011
New Revision: 65561
URL: http://svn.opensuse.org/viewcvs/yast?rev=65561&view=rev
Log:
- added new Systemd.ycp module for handling systemd configuration,
(needed for bnc#707418)
- 2.21.16
Added:
trunk/yast2/library/runlevel/src/Systemd.ycp
trunk/yast2/library/runlevel/testsuite/tests/Systemd.err
trunk/yast2/library/runlevel/testsuite/tests/Systemd.out
trunk/yast2/library/runlevel/testsuite/tests/Systemd.ycp
Modified:
trunk/yast2/VERSION
trunk/yast2/library/runlevel/src/Makefile.am
trunk/yast2/package/yast2.changes
Modified: trunk/yast2/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/yast2/VERSION?rev=65561&r1=65560&r2=65561&view=diff
==============================================================================
--- trunk/yast2/VERSION (original)
+++ trunk/yast2/VERSION Mon Sep 5 18:53:08 2011
@@ -1 +1 @@
-2.21.15
+2.21.16
Modified: trunk/yast2/library/runlevel/src/Makefile.am
URL: http://svn.opensuse.org/viewcvs/yast/trunk/yast2/library/runlevel/src/Makefile.am?rev=65561&r1=65560&r2=65561&view=diff
==============================================================================
--- trunk/yast2/library/runlevel/src/Makefile.am (original)
+++ trunk/yast2/library/runlevel/src/Makefile.am Mon Sep 5 18:53:08 2011
@@ -4,7 +4,7 @@
scrconf_DATA = initscripts.scr
-module_DATA = Service.ycp Runlevel.ycp
+module_DATA = Service.ycp Runlevel.ycp Systemd.ycp
EXTRA_DIST = $(agent_SCRIPTS) \
$(scrconf_DATA) $(module_DATA)
Added: trunk/yast2/library/runlevel/src/Systemd.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/yast2/library/runlevel/src/Systemd.ycp?rev=65561&view=auto
==============================================================================
--- trunk/yast2/library/runlevel/src/Systemd.ycp (added)
+++ trunk/yast2/library/runlevel/src/Systemd.ycp Mon Sep 5 18:53:08 2011
@@ -0,0 +1,83 @@
+/**
+ * File: modules/Systemd.ycp
+ * Package: yast2
+ * Summary: systemd configuration
+ * Authors: Ladislav Slezák
+ *
+ * $Id$
+ *
+ * Functions for setting systemd options
+ */
+
+{
+
+module "Systemd";
+
+import "Package";
+import "String";
+
+textdomain "base";
+
+/**
+ * Check whether the systemd package is installed
+ */
+global boolean Installed()
+{
+ // check for systemd package
+ return Package::Installed("systemd");
+}
+
+/*
+ * Check whether systemd init is currently running
+ * @return boolean true if systemd init is running
+ */
+global boolean Running()
+{
+ // check the command of the init program (PID=1)
+ const string cmdline_path = "/proc/1/cmdline";
+ const string systemd_path = "/bin/systemd";
+
+ // /proc/<pid>/cmdline is a NULL separated list
+ // we cannot use NULL separator in YCP (?), check just the begining
+ string init_cmdline = (string)SCR::Read(.target.string, cmdline_path);
+ y2milestone("Current init program: %1", init_cmdline);
+
+ boolean ret = substring(init_cmdline, 0, size(systemd_path)) == systemd_path;
+ y2milestone("Systemd detected: %1", ret);
+
+ return ret;
+}
+
+/**
+ * Set default runlevel for systemd (assumes systemd is installed)
+ * @param runlevel the default runlevel to set (integer in range 0..6)
+ * @return boolean true on success
+ */
+global boolean SetDefaultRunlevel(integer runlevel)
+{
+ const string default_symlink = "/etc/systemd/system/default.target";
+
+ if (runlevel == nil || runlevel < 0 || runlevel > 6)
+ {
+ y2error("Invalid default runlevel (must be in range 0..6): %1", runlevel);
+ return false;
+ }
+
+ y2milestone("Setting systemd default runlevel: %1", runlevel);
+
+ // create symbolic link, -f to rewrite the current link (if exists)
+ string command = sformat("/bin/ln -s -f /lib/systemd/system/runlevel%1.target %2", runlevel, default_symlink);
+ y2milestone("Executing: %1", command);
+
+ integer res = (integer)SCR::Execute(.target.bash, command);
+ y2debug("Result: %1", res);
+
+ boolean ret = (res == 0);
+ y2milestone("Default runlevel set: %1", ret);
+
+ return ret;
+}
+
+
+} /* EOF */
+
Added: trunk/yast2/library/runlevel/testsuite/tests/Systemd.err
URL: http://svn.opensuse.org/viewcvs/yast/trunk/yast2/library/runlevel/testsuite/tests/Systemd.err?rev=65561&view=auto
==============================================================================
(empty)
Added: trunk/yast2/library/runlevel/testsuite/tests/Systemd.out
URL: http://svn.opensuse.org/viewcvs/yast/trunk/yast2/library/runlevel/testsuite/tests/Systemd.out?rev=65561&view=auto
==============================================================================
--- trunk/yast2/library/runlevel/testsuite/tests/Systemd.out (added)
+++ trunk/yast2/library/runlevel/testsuite/tests/Systemd.out Mon Sep 5 18:53:08 2011
@@ -0,0 +1,18 @@
+Dump Systemd::Running() tests
+Read .target.string "/proc/1/cmdline" "init [5]\n"
+Return false
+Read .target.string "/proc/1/cmdline" "/bin/systemd\n"
+Return true
+Dump Systemd::SetDefaultRunlevel() tests
+Log Invalid default runlevel (must be in range 0..6): nil
+Return false
+Log Invalid default runlevel (must be in range 0..6): -1
+Return false
+Log Invalid default runlevel (must be in range 0..6): 7
+Return false
+Execute .target.bash "/bin/ln -s -f /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target" 0
+Return true
+Execute .target.bash "/bin/ln -s -f /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target" 0
+Return true
+Execute .target.bash "/bin/ln -s -f /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target" 1
+Return false
Added: trunk/yast2/library/runlevel/testsuite/tests/Systemd.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/yast2/library/runlevel/testsuite/tests/Systemd.ycp?rev=65561&view=auto
==============================================================================
--- trunk/yast2/library/runlevel/testsuite/tests/Systemd.ycp (added)
+++ trunk/yast2/library/runlevel/testsuite/tests/Systemd.ycp Mon Sep 5 18:53:08 2011
@@ -0,0 +1,48 @@
+{
+ import "Systemd";
+ include "testsuite.ycp";
+
+
+ DUMP("Systemd::Running() tests");
+
+ // Note: \0 should be used here as the separator, but YCP does not allows that...
+
+ // test standard System V init
+ TEST (``(Systemd::Running()), [$[
+ "target" : $[ "string" : "init [5]\n" ]
+ ], $[], $[]], nil);
+
+ // systemd
+ TEST (``(Systemd::Running()), [$[
+ "target" : $[ "string" : "/bin/systemd\n" ]
+ ], $[], $[]], nil);
+
+ DUMP("Systemd::SetDefaultRunlevel() tests");
+
+ // test invalid parameters
+ TEST (``(Systemd::SetDefaultRunlevel(nil)), [$[], $[], $[
+ "target" : $[ "bash" : 0 ]
+ ]], nil);
+
+ TEST (``(Systemd::SetDefaultRunlevel(-1)), [$[], $[], $[
+ "target" : $[ "bash" : 0 ]
+ ]], nil);
+
+ TEST (``(Systemd::SetDefaultRunlevel(7)), [$[], $[], $[
+ "target" : $[ "bash" : 0 ]
+ ]], nil);
+
+ // test valid parameters
+ TEST (``(Systemd::SetDefaultRunlevel(3)), [$[], $[], $[
+ "target" : $[ "bash" : 0 ]
+ ]], nil);
+
+ TEST (``(Systemd::SetDefaultRunlevel(5)), [$[], $[], $[
+ "target" : $[ "bash" : 0 ]
+ ]], nil);
+
+ // test failure
+ TEST (``(Systemd::SetDefaultRunlevel(5)), [$[], $[], $[
+ "target" : $[ "bash" : 1 ]
+ ]], nil);
+}
Modified: trunk/yast2/package/yast2.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/yast2/package/yast2.changes?rev=65561&r1=65560&r2=65561&view=diff
==============================================================================
--- trunk/yast2/package/yast2.changes (original)
+++ trunk/yast2/package/yast2.changes Mon Sep 5 18:53:08 2011
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Mon Sep 5 16:40:22 UTC 2011 - lslezak@suse.cz
+
+- added new Systemd.ycp module for handling systemd configuration,
+ (needed for bnc#707418)
+- 2.21.16
+
+-------------------------------------------------------------------
Thu Sep 1 06:40:43 UTC 2011 - jsrain@site
- enhanced the help command-line parameters (bnc#712271)
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org