From d53492bea1ed9c08710af75c54abea9a69f82757 Mon Sep 17 00:00:00 2001 From: Jaroslav Mracek Date: Wed, 19 Jun 2019 12:42:31 +0200 Subject: [PATCH] Prevent switching modules in all cases (RhBug:1706215) The test moved into cli/do_transaction() allows to apply the restriction for all commands. https://bugzilla.redhat.com/show_bug.cgi?id=1706215 --- dnf/cli/cli.py | 16 ++++++++++++++++ dnf/cli/commands/module.py | 23 ----------------------- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/dnf/cli/cli.py b/dnf/cli/cli.py index 09642d1..6ac18fa 100644 --- a/dnf/cli/cli.py +++ b/dnf/cli/cli.py @@ -142,6 +142,13 @@ def print_versions(pkgs, base, output): # sm_ui_date(pkg.committime))) +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 BaseCli(dnf.Base): """This is the base class for yum cli.""" @@ -157,6 +164,15 @@ class BaseCli(dnf.Base): :param display: `rpm.callback.TransactionProgress` object(s) :return: history database transaction ID or None """ + if dnf.base.WITH_MODULES: + switchedModules = dict(self._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) trans = self.transaction pkg_str = self.output.list_transaction(trans) diff --git a/dnf/cli/commands/module.py b/dnf/cli/commands/module.py index 143bfaa..acaa42c 100644 --- a/dnf/cli/commands/module.py +++ b/dnf/cli/commands/module.py @@ -32,13 +32,6 @@ 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): @@ -122,14 +115,6 @@ 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): @@ -193,14 +178,6 @@ 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.28.2