Yedidyah Bar David has uploaded a new change for review.

Change subject: packaging: setup: clean up selinux and move to common
......................................................................

packaging: setup: clean up selinux and move to common

Make all users use env and just a single plugin actually call selinux
commands.

Move to to common/base so it's available to others.

Change-Id: I7e2c7e6871cab4bed04186b8441b86d0476910f9
Signed-off-by: Yedidyah Bar David <d...@redhat.com>
---
M packaging/setup/ovirt_engine_setup/constants.py
R packaging/setup/plugins/ovirt-engine-common/base/system/selinux.py
M 
packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/apache/selinux.py
M packaging/setup/plugins/ovirt-engine-setup/ovirt-engine/all-in-one/sshd.py
4 files changed, 48 insertions(+), 83 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/72/39672/1

diff --git a/packaging/setup/ovirt_engine_setup/constants.py 
b/packaging/setup/ovirt_engine_setup/constants.py
index 1168fa0..98ee7fa 100644
--- a/packaging/setup/ovirt_engine_setup/constants.py
+++ b/packaging/setup/ovirt_engine_setup/constants.py
@@ -223,6 +223,8 @@
     KEEP_ONLY_VALID_FIREWALL_MANAGERS = \
         'osetup.keep.only.valid.firewall.managers'
 
+    SETUP_SELINUX = 'osetup.setup.selinux'
+
 
 @util.export
 @util.codegen
@@ -347,6 +349,7 @@
 
     SELINUX_CONTEXTS = 'OVESETUP_SYSTEM/selinuxContexts'
     SELINUX_RESTORE_PATHS = 'OVESETUP_SYSTEM/selinuxRestorePaths'
+    SELINUX_BOOLEANS = 'OVESETUP_SYSTEM/selinuxBooleans'
 
     HOSTILE_SERVICES = 'OVESETUP_SYSTEM/hostileServices'
 
diff --git 
a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine/system/selinux.py 
b/packaging/setup/plugins/ovirt-engine-common/base/system/selinux.py
similarity index 78%
rename from 
packaging/setup/plugins/ovirt-engine-setup/ovirt-engine/system/selinux.py
rename to packaging/setup/plugins/ovirt-engine-common/base/system/selinux.py
index ab4dd0b..df9fd65 100644
--- a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine/system/selinux.py
+++ b/packaging/setup/plugins/ovirt-engine-common/base/system/selinux.py
@@ -25,7 +25,6 @@
 from otopi import plugin, util
 
 from ovirt_engine_setup import constants as osetupcons
-from ovirt_engine_setup.engine import constants as oenginecons
 
 
 def _(m):
@@ -48,6 +47,7 @@
     def _init(self):
         self.environment[osetupcons.SystemEnv.SELINUX_CONTEXTS] = []
         self.environment[osetupcons.SystemEnv.SELINUX_RESTORE_PATHS] = []
+        self.environment[osetupcons.SystemEnv.SELINUX_BOOLEANS] = []
 
     @plugin.event(
         stage=plugin.Stages.STAGE_SETUP,
@@ -64,12 +64,9 @@
         priority=plugin.Stages.PRIORITY_HIGH,
     )
     def _validation_enable(self):
-        self._enabled = (
-            self.environment[oenginecons.CoreEnv.ENABLE] and
-            not self.environment[
-                osetupcons.CoreEnv.DEVELOPER_MODE
-            ]
-        )
+        self._enabled = not self.environment[
+            osetupcons.CoreEnv.DEVELOPER_MODE
+        ]
 
     @plugin.event(
         stage=plugin.Stages.STAGE_VALIDATION,
@@ -90,6 +87,7 @@
     @plugin.event(
         stage=plugin.Stages.STAGE_MISC,
         condition=lambda self: self._enabled,
+        name=osetupcons.Stages.SETUP_SELINUX,
         priority=plugin.Stages.PRIORITY_LOW,
     )
     def _misc(self):
@@ -125,6 +123,26 @@
                         path=path
                     )
                 )
+        for entry in self.environment[osetupcons.SystemEnv.SELINUX_BOOLEANS]:
+            rc, stdout, stderr = self.execute(
+                (
+                    self.command.get('semanage'),
+                    'boolean',
+                    '--modify',
+                    '--{state}'.format(state=entry['state'],
+                    entry['boolean']
+                )
+            )
+            if rc != 0:
+                self.logger.error(
+                    _(
+                        'Failed to modify selinux boolean {boolean}, please '
+                        'make sure it is set to {state}.'
+                    ).format(
+                        boolean=entry['boolean'],
+                        state=entry['state'],
+                    )
+                )
 
 
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git 
a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/apache/selinux.py
 
b/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/apache/selinux.py
index 09da4e4..b6923a9 100644
--- 
a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/apache/selinux.py
+++ 
b/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-common/apache/selinux.py
@@ -37,66 +37,20 @@
 
     def __init__(self, context):
         super(Plugin, self).__init__(context=context)
-        self._enabled = True
-
-    @plugin.event(
-        stage=plugin.Stages.STAGE_SETUP,
-    )
-    def _setup(self):
-        self.command.detect('selinuxenabled')
-        self.command.detect('semanage')
-        self._enabled = not self.environment[
-            osetupcons.CoreEnv.DEVELOPER_MODE
-        ]
-
-    @plugin.event(
-        stage=plugin.Stages.STAGE_VALIDATION,
-        condition=lambda self: self._enabled,
-        priority=plugin.Stages.PRIORITY_HIGH
-    )
-    def _validation_enable(self):
-        if not self.environment[oengcommcons.ApacheEnv.ENABLE]:
-            self._enabled = False
-
-    @plugin.event(
-        stage=plugin.Stages.STAGE_VALIDATION,
-        condition=lambda self: self._enabled,
-    )
-    def _validation(self):
-        if self.command.get('selinuxenabled', optional=True) is None:
-            self._enabled = False
-        else:
-            rc, stdout, stderr = self.execute(
-                (
-                    self.command.get('selinuxenabled'),
-                ),
-                raiseOnError=False,
-            )
-            self._enabled = rc == 0
 
     @plugin.event(
         stage=plugin.Stages.STAGE_MISC,
-        condition=lambda self: self._enabled,
+        before=(
+            osetupcons.Stages.SETUP_SELINUX,
+        ),
     )
     def _misc(self):
-        command = (
-            self.command.get('semanage'),
-            'boolean',
-            '--modify',
-            '--on',
-            'httpd_can_network_connect',
-        )
-        rc, stdout, stderr = self.execute(
-            command,
-            raiseOnError=False,
-        )
-        if rc != 0:
-            self.logger.warning(
-                _(
-                    'Failed to modify httpd selinux context, please make '
-                    'sure httpd_can_network_connect is set.'
-                )
-            )
+        self.environment[
+            osetupcons.SystemEnv.SELINUX_BOOLEANS
+        ].append({
+            'boolean': 'httpd_can_network_connect',
+            'state': 'on'
+        })
 
 
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git 
a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine/all-in-one/sshd.py 
b/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine/all-in-one/sshd.py
index 5baa81b..fcb617e 100644
--- a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine/all-in-one/sshd.py
+++ b/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine/all-in-one/sshd.py
@@ -77,7 +77,6 @@
             osetupcons.CoreEnv.DEVELOPER_MODE
         ]
         self.command.detect('sshd')
-        self.command.detect('restorecon')
 
     @plugin.event(
         stage=plugin.Stages.STAGE_CUSTOMIZATION,
@@ -148,15 +147,24 @@
         after=(
             osetupcons.Stages.SSH_KEY_AVAILABLE,
         ),
+        before=(
+            osetupcons.Stages.SETUP_SELINUX,
+        ),
     )
     def _misc(self):
         authorized_keys_line = self.environment[
             oenginecons.PKIEnv.ENGINE_SSH_PUBLIC_KEY
         ] + ' ovirt-engine'
 
-        authorized_keys_file = os.path.join(
+        sshdir = os.path.join(
             os.path.expanduser('~root'),
-            '.ssh',
+            '.ssh'
+        )
+        self.environment[
+            osetupcons.SystemEnv.SELINUX_RESTORE_PATHS
+        ].append(sshdir)
+        authorized_keys_file = os.path.join(
+            sshdir,
             'authorized_keys'
         )
 
@@ -198,24 +206,6 @@
             name='sshd',
             state=True
         )
-
-        if self.command.get('restorecon', optional=True) is not None:
-            rc, stdout, stderr = self.execute(
-                (
-                    self.command.get('restorecon'),
-                    '-r',
-                    os.path.join(
-                        os.path.expanduser('~root'),
-                        '.ssh',
-                    ),
-                ),
-                raiseOnError=False,
-            )
-
-            if rc != 0:
-                self.logger.warning(
-                    _('Cannot set SELinux properties on SSH directory')
-                )
 
 
 # vim: expandtab tabstop=4 shiftwidth=4


-- 
To view, visit https://gerrit.ovirt.org/39672
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7e2c7e6871cab4bed04186b8441b86d0476910f9
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yedidyah Bar David <d...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to