From 25d7c0129c7a5490f2c735cd927555c043e04ff6 Mon Sep 17 00:00:00 2001 From: Jaroslav Mracek Date: Wed, 13 Feb 2019 16:27:39 +0100 Subject: [PATCH] Not allow direct module switch (RhBug:1669491) --- dnf/cli/commands/module.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/dnf/cli/commands/module.py b/dnf/cli/commands/module.py index edb3dfd..6d23bd2 100644 --- a/dnf/cli/commands/module.py +++ b/dnf/cli/commands/module.py @@ -31,6 +31,14 @@ import libdnf import dnf.module.module_base import dnf.exceptions + +def report_module_switch(switchedModules): + msg1 = _("The operation would result in switching of module '{0}' stream '{1}' to " + "stream '{2}'") + for moduleName, streams in switchedModules.items(): + logger.warning(msg1.format(moduleName, streams[0], streams[1])) + + class ModuleCommand(commands.Command): class SubCommand(commands.Command): @@ -115,6 +123,14 @@ class ModuleCommand(commands.Command): libdnf.module.ModulePackageContainer.ModuleErrorType_ERROR_IN_DEFAULTS: raise e logger.error(str(e)) + switchedModules = dict(self.base._moduleContainer.getSwitchedStreams()) + if switchedModules: + report_module_switch(switchedModules) + msg = _("It is not possible to switch enabled streams of a module.\n" + "It is recommended to remove all installed content from the module, and " + "reset the module using 'dnf module reset ' command. After " + "you reset the module, you can enable the other stream.") + raise dnf.exceptions.Error(msg) class DisableSubCommand(SubCommand): @@ -178,6 +194,14 @@ class ModuleCommand(commands.Command): if e.no_match_group_specs or e.error_group_specs: raise e logger.error(str(e)) + switchedModules = dict(self.base._moduleContainer.getSwitchedStreams()) + if switchedModules: + report_module_switch(switchedModules) + msg = _("It is not possible to switch enabled streams of a module.\n" + "It is recommended to remove all installed content from the module, and " + "reset the module using 'dnf module reset ' command. After " + "you reset the module, you can install the other stream.") + raise dnf.exceptions.Error(msg) class UpdateSubCommand(SubCommand): -- libgit2 0.27.7