Ofer Schreiber has uploaded a new change for review.

Change subject: DO NOT MERGE: packaging: engine-setup - add firewalld support
......................................................................

DO NOT MERGE: packaging: engine-setup - add firewalld support

Add firewalld support for ovirt-engine-setup.
If the user will ask setup to handle firewalld, the setup will open
needed ports (JBoss ports + NFS) in all firewalld zones.

Change-Id: Ieea93c90ffb90e02b880949a67575495aac5a472
Signed-off-by: Ofer Schreiber <[email protected]>
---
M Makefile
M packaging/fedora/setup/basedefs.py
M packaging/fedora/setup/engine-setup.py
A packaging/fedora/setup/engine_firewalld.py
A packaging/fedora/setup/firewalld.ovirt.xml
M packaging/fedora/spec/ovirt-engine.spec.in
6 files changed, 78 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/10493/1

diff --git a/Makefile b/Makefile
index 45f8dc4..1109dfc 100644
--- a/Makefile
+++ b/Makefile
@@ -209,6 +209,7 @@
        @install -dm 755 $(DESTDIR)$(SYSCONF_DIR)/cron.daily
        @install -dm 755 $(DESTDIR)$(SYSCONF_DIR)/security/limits.d
        @install -dm 755 $(DESTDIR)$(SYSCONF_DIR)/rc.d/init.d
+       @install -dm 755 $(DESTDIR)$(SYSCONF_DIR)/firewalld/services
 
        @install -dm 755 $(DESTDIR)/usr/lib/systemd/system
        @install -dm 755 $(DESTDIR)$(SYSCONF_DIR)/tmpfiles.d
@@ -247,6 +248,7 @@
        # Configuration files:
        install -m 644 packaging/fedora/setup/engine-config-install.properties 
$(DESTDIR)$(DATA_DIR)/conf
        install -m 644 packaging/fedora/setup/iptables.default 
$(DESTDIR)$(DATA_DIR)/conf
+       install -m 644 packaging/fedora/setup/firewalld.ovirt.xml 
$(DESTDIR)$(SYSCONF_DIR)/firewalld/services/ovirt.xml
        install -m 644 packaging/fedora/setup/nfs.sysconfig 
$(DESTDIR)$(DATA_DIR)/conf
        install -m 644 packaging/fedora/setup/ovirt-engine-proxy.conf.in 
$(DESTDIR)$(DATA_DIR)/conf
 
@@ -254,6 +256,7 @@
        install -m 644 packaging/fedora/setup/nfsutils.py 
$(DESTDIR)$(DATA_DIR)/scripts
        install -m 644 packaging/fedora/setup/basedefs.py 
$(DESTDIR)$(DATA_DIR)/scripts
        install -m 644 packaging/fedora/setup/engine_validators.py 
$(DESTDIR)$(DATA_DIR)/scripts
+       install -m 644 packaging/fedora/setup/engine_firewalld.py 
$(DESTDIR)$(DATA_DIR)/scripts
        install -m 644 packaging/fedora/setup/setup_params.py 
$(DESTDIR)$(DATA_DIR)/scripts
        install -m 644 packaging/fedora/setup/setup_sequences.py 
$(DESTDIR)$(DATA_DIR)/scripts
        install -m 644 packaging/fedora/setup/setup_controller.py 
$(DESTDIR)$(DATA_DIR)/scripts
diff --git a/packaging/fedora/setup/basedefs.py 
b/packaging/fedora/setup/basedefs.py
index 6f574f7..381df65 100644
--- a/packaging/fedora/setup/basedefs.py
+++ b/packaging/fedora/setup/basedefs.py
@@ -83,6 +83,7 @@
 FILE_IPTABLES_DEFAULT="%s/ovirt-engine/conf/iptables.default" % DIR_USR_SHARE
 FILE_IPTABLES_EXAMPLE="/etc/ovirt-engine/iptables.example"
 FILE_IPTABLES_BACKUP="%s/ovirt-engine/backups/iptables.backup" % DIR_VAR_LIB
+FILE_FIREWALLD_SERVICE="/etc/firewalld/services/ovirt.xml"
 FILE_NFS_SYSCONFIG="%s/ovirt-engine/conf/nfs.sysconfig" % DIR_USR_SHARE
 FILE_NFS_BACKUP="%s/ovirt-engine/backups/nfs.backup" % DIR_VAR_LIB
 FILE_ETC_EXPORTS="/etc/exports"
diff --git a/packaging/fedora/setup/engine-setup.py 
b/packaging/fedora/setup/engine-setup.py
index f347e78..f7f97e3 100755
--- a/packaging/fedora/setup/engine-setup.py
+++ b/packaging/fedora/setup/engine-setup.py
@@ -27,6 +27,7 @@
 from setup_controller import Controller
 from Cheetah.Template import Template
 from miniyum import MiniYum
+import engine_firewalld as firewalld
 
 # Globals
 controller = Controller()
@@ -164,7 +165,7 @@
                         'condition'       : [],
                         'condition_match' : [],
                         'steps'           : [ { 'title'     : 
output_messages.INFO_CFG_IPTABLES,
-                                                'functions' : 
[_configIptables] },
+                                                'functions' : 
[_configFirewalld] },
                                               { 'title'     : 
output_messages.INFO_START_ENGINE,
                                                 'functions' : [_startEngine] } 
]
                        },
@@ -882,6 +883,47 @@
         fileHandler.editParam("authorityInfoAccess", " 
caIssuers;URI:http://%s:%s/ca.crt"; % (controller.CONF["HOST_FQDN"], 
controller.CONF["HTTP_PORT"]))
         fileHandler.close()
 
+def _configFirewalld():
+    logging.debug("configuring firewalld")
+
+    # Open xml
+    servicexml = utils.XMLConfigFileHandler(basedefs.FILE_FIREWALLD_SERVICE) 
+    servicexml.open()
+
+    # Remove all port entries
+    servicexml.removeNodes("/service/ports")
+
+    # Add ports to service xml
+    ports = []
+    for port in [controller.CONF["HTTP_PORT"], controller.CONF["HTTPS_PORT"]]:
+        ports.append({
+            'port': port,
+            'protocol': ['tcp']
+        })
+
+    if utils.compareStrIgnoreCase(controller.CONF["CONFIG_NFS"], "yes"):
+        ports += NFS_IPTABLES_PORTS
+
+    for portCfg in ports:
+        for protocol in portCfg["protocol"]:
+             servicexml.addNodes("/service", "<port protocol=\"%s\" 
port=\"%s\"/>" % (protocol, portCfg["port"]))
+
+    # Save firewalld service configuration
+    servicexml.close()
+
+    # Open ports in all firewall zones if needed
+    if controller.CONF["OVERRIDE_IPTABLES"] == "yes":
+        for zone in firewalld.getActiveZones():
+            firewalld.addServiceToZone("ovirt", zone)
+
+        # Restart firewalld
+        service = utils.Service("firewalld")
+        service.stop(True)
+        service.start(True)
+    else:
+        pass
+        # print MSG about how to add needed ports
+
 def _configIptables():
     logging.debug("configuring iptables")
     try:
diff --git a/packaging/fedora/setup/engine_firewalld.py 
b/packaging/fedora/setup/engine_firewalld.py
new file mode 100644
index 0000000..7c3b017
--- /dev/null
+++ b/packaging/fedora/setup/engine_firewalld.py
@@ -0,0 +1,19 @@
+from gi.repository import GObject
+import sys
+sys.modules['gobject'] = GObject
+from firewall.client import FirewallClient
+from firewall.errors import *
+
+def getActiveZones():
+    fw = FirewallClient()
+    zones = fw.getActiveZones()
+    return zones
+
+def addServiceToZone(service, zone):
+    fw = FirewallClient()
+    fw_zone = fw.config().getZoneByName(zone)
+    fw_settings = fw_zone.getSettings()
+    fw_settings.addService(service)
+    fw_zone.update(fw_settings)
+
+
diff --git a/packaging/fedora/setup/firewalld.ovirt.xml 
b/packaging/fedora/setup/firewalld.ovirt.xml
new file mode 100644
index 0000000..ba14296
--- /dev/null
+++ b/packaging/fedora/setup/firewalld.ovirt.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<service>
+  <short>ovirt</short>
+  <description>UberPortOfDoon</description>
+  <port protocol="udp" port="8080"/>
+  <port protocol="tcp" port="8080"/>
+  <port protocol="tcp" port="8111"/>
+</service>
diff --git a/packaging/fedora/spec/ovirt-engine.spec.in 
b/packaging/fedora/spec/ovirt-engine.spec.in
index b0b7c02..8f52bfe 100644
--- a/packaging/fedora/spec/ovirt-engine.spec.in
+++ b/packaging/fedora/spec/ovirt-engine.spec.in
@@ -757,6 +757,7 @@
 # Python scripts:
 %{engine_data}/scripts/basedefs.py*
 %{engine_data}/scripts/engine_validators.py*
+%{engine_data}/scripts/engine_firewalld.py*
 %{engine_data}/scripts/setup_params.py*
 %{engine_data}/scripts/setup_sequences.py*
 %{engine_data}/scripts/setup_controller.py*
@@ -770,6 +771,9 @@
 %{engine_data}/scripts/post_upgrade.py*
 %{engine_data}/scripts/add_fn_db_get_async_tasks_function.sql
 
+# Firewalld configuration
+%{_sysconfdir}/firewalld/services/ovirt.xml
+
 # Man pages
 %{_mandir}/man8/engine-setup.*
 %{_mandir}/man8/engine-upgrade.*


--
To view, visit http://gerrit.ovirt.org/10493
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieea93c90ffb90e02b880949a67575495aac5a472
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ofer Schreiber <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to