Simone Tiraboschi has uploaded a new change for review. Change subject: packaging: setup: Adding a dialog to let the user review iptables changes ......................................................................
packaging: setup: Adding a dialog to let the user review iptables changes Adding a dialog to let the user review iptables changes before apply them. Change-Id: I63e0eeb26d925c8c79b9c8e55da64c57ce94a3f6 Bug-Url: https://bugzilla.redhat.com/1109326 Signed-off-by: Simone Tiraboschi <stira...@redhat.com> --- M packaging/setup/ovirt_engine_setup/constants.py M packaging/setup/ovirt_engine_setup/firewall_manager_base.py M packaging/setup/plugins/ovirt-engine-common/base/network/firewall_manager_iptables.py M packaging/setup/plugins/ovirt-engine-setup/base/network/firewall_manager.py 4 files changed, 69 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/85/33085/1 diff --git a/packaging/setup/ovirt_engine_setup/constants.py b/packaging/setup/ovirt_engine_setup/constants.py index f868e6c..40fd41f 100644 --- a/packaging/setup/ovirt_engine_setup/constants.py +++ b/packaging/setup/ovirt_engine_setup/constants.py @@ -381,6 +381,7 @@ return 'OVESETUP_CONFIG/updateFirewall' FIREWALL_MANAGERS = 'OVESETUP_CONFIG/firewallManagers' + SKIP_FIREWALL_REVIEW = 'OVESETUP_CONFIG/skipFirewallReview' VALID_FIREWALL_MANAGERS = 'OVESETUP_CONFIG/validFirewallManagers' FQDN_REVERSE_VALIDATION = 'OVESETUP_CONFIG/fqdnReverseValidation' FQDN_NON_LOOPBACK_VALIDATION = 'OVESETUP_CONFIG/fqdnNonLoopback' diff --git a/packaging/setup/ovirt_engine_setup/firewall_manager_base.py b/packaging/setup/ovirt_engine_setup/firewall_manager_base.py index fd08f69..e6660b4 100644 --- a/packaging/setup/ovirt_engine_setup/firewall_manager_base.py +++ b/packaging/setup/ovirt_engine_setup/firewall_manager_base.py @@ -68,5 +68,8 @@ def print_manual_configuration_instructions(self): pass + def review_config(self): + pass + # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/packaging/setup/plugins/ovirt-engine-common/base/network/firewall_manager_iptables.py b/packaging/setup/plugins/ovirt-engine-common/base/network/firewall_manager_iptables.py index 650a3f0..a213ef3 100644 --- a/packaging/setup/plugins/ovirt-engine-common/base/network/firewall_manager_iptables.py +++ b/packaging/setup/plugins/ovirt-engine-common/base/network/firewall_manager_iptables.py @@ -20,6 +20,7 @@ Firewall manager iptables plugin. """ +import difflib import gettext _ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-setup') @@ -35,6 +36,7 @@ from ovirt_engine_setup import constants as osetupcons from ovirt_engine_setup import firewall_manager_base +from ovirt_engine_setup import dialog from . import process_firewalld_services @@ -49,6 +51,8 @@ class _IpTablesManager(firewall_manager_base.FirewallManagerBase): _SERVICE = 'iptables' + + _REDHAT_IPTABLES = '/etc/sysconfig/iptables' def _get_rules(self): if self._rules is None: @@ -124,6 +128,44 @@ ) ) + def review_config(self): + + diffl = '' + with open(self._REDHAT_IPTABLES, 'r') as current: + diff = difflib.unified_diff( + current.readlines(), + self._get_rules().splitlines(True), + fromfile=_('current'), + tofile=_('proposed'), + ) + for line in diff: + diffl += line + if len(diffl) > 0: + confirmed = dialog.queryBoolean( + dialog=self.plugin.dialog, + name='OVESETUP_RPMDISTRO_REQUIRE_ROLLBACK', + note=_( + 'Generated iptables rules diverge from current ones.\n' + 'Please review the changes:\n\n' + '{diff}\n\n' + 'Do you want to proceed with firewall configuration? ' + '(@VALUES@) [@DEFAULT@]: ' + ).format( + diff=diffl + ), + prompt=True, + true=_('Yes'), + false=_('No'), + default=True, + ) + if not confirmed: + raise RuntimeError( + _( + 'iptables proposed configuration ' + 'was rejected by user' + ) + ) + @plugin.event( stage=plugin.Stages.STAGE_SETUP, before=( diff --git a/packaging/setup/plugins/ovirt-engine-setup/base/network/firewall_manager.py b/packaging/setup/plugins/ovirt-engine-setup/base/network/firewall_manager.py index 6fb42fc..9ce362a 100644 --- a/packaging/setup/plugins/ovirt-engine-setup/base/network/firewall_manager.py +++ b/packaging/setup/plugins/ovirt-engine-setup/base/network/firewall_manager.py @@ -57,6 +57,10 @@ None ) self.environment.setdefault( + osetupcons.ConfigEnv.SKIP_FIREWALL_REVIEW, + False + ) + self.environment.setdefault( osetupcons.ConfigEnv.VALID_FIREWALL_MANAGERS, '' ) @@ -224,6 +228,25 @@ ).enable() @plugin.event( + stage=plugin.Stages.STAGE_VALIDATION, + condition=lambda self: self.environment[ + osetupcons.ConfigEnv.UPDATE_FIREWALL + ], + after=( + otopicons.Stages.FIREWALLD_VALIDATION, + otopicons.Stages.IPTABLES_VALIDATION, + ), + ) + def _review_config(self): + if not self.environment[ + osetupcons.ConfigEnv.SKIP_FIREWALL_REVIEW + ]: + for manager in self.environment[ + osetupcons.ConfigEnv.FIREWALL_MANAGERS + ]: + manager.review_config() + + @plugin.event( stage=plugin.Stages.STAGE_MISC, ) def _prepare_examples(self): -- To view, visit http://gerrit.ovirt.org/33085 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I63e0eeb26d925c8c79b9c8e55da64c57ce94a3f6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Simone Tiraboschi <stira...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches