From 341b5777b2350cf07d06327e998394f3795cb283 Mon Sep 17 00:00:00 2001
From: Goutham Pacha Ravi <gouthampravi@gmail.com>
Date: Wed, 27 May 2020 10:25:21 -0700
Subject: [PATCH] [devstack] Allow cephfs daemon port access

If the cephfs protocol is enabled, clients
need to access the ceph daemons.

We also don't need to enable access to NFS
ports when not using NFS.

Change-Id: I077d12785f94c940716f0e479d43dbb29ddc3c3c
Signed-off-by: Goutham Pacha Ravi <gouthampravi@gmail.com>
---
 devstack/plugin.sh | 35 ++++++++++++++++++++++-------------
 1 file changed, 22 insertions(+), 13 deletions(-)

diff --git a/devstack/plugin.sh b/devstack/plugin.sh
index 2b12efa71a..de58505f5b 100755
--- a/devstack/plugin.sh
+++ b/devstack/plugin.sh
@@ -1015,20 +1015,29 @@ function install_libraries {
 
 function allow_host_ports_for_share_mounting {
 
-    TCP_PORTS=(2049 111 32803 892 875 662)
-    UDP_PORTS=(111 32769 892 875 662)
-    for ipcmd in iptables ip6tables; do
-        # (aovchinnikov): extra rules are needed to allow instances talk to
-        # host.
-        sudo $ipcmd -N manila-nfs
-        sudo $ipcmd -I INPUT 1 -j manila-nfs
-        for port in ${TCP_PORTS[*]}; do
-            sudo $ipcmd -A manila-nfs -m tcp -p tcp --dport $port -j ACCEPT
+    if [[ $MANILA_ENABLED_SHARE_PROTOCOLS =~ NFS ]]; then
+        # 111 and 2049 are for rpcbind and NFS
+        # Other ports are for NFSv3 statd, mountd and lockd daemons
+        MANILA_TCP_PORTS=(2049 111 32803 892 875 662)
+        MANILA_UDP_PORTS=(111 32769 892 875 662)
+    fi
+    if [[ $MANILA_ENABLED_SHARE_PROTOCOLS =~ CEPHFS ]]; then
+        # clients need access to the ceph daemons
+        MANILA_TCP_PORTS=(${MANILA_TCP_PORTS[*]} 6789 6800:7300)
+    fi
+
+    if [[ -v MANILA_TCP_PORTS || -v MANILA_UDP_PORTS ]]; then
+        for ipcmd in iptables ip6tables; do
+            sudo $ipcmd -N manila-storage
+            sudo $ipcmd -I INPUT 1 -j manila-storage
+            for port in ${MANILA_TCP_PORTS[*]}; do
+                sudo $ipcmd -A manila-storage -m tcp -p tcp --dport $port -j ACCEPT
+            done
+            for port in ${MANILA_UDP_PORTS[*]}; do
+                sudo $ipcmd -A manila-storage -m udp -p udp --dport $port -j ACCEPT
+            done
         done
-        for port in ${UDP_PORTS[*]}; do
-            sudo $ipcmd -A manila-nfs -m udp -p udp --dport $port -j ACCEPT
-        done
-    done
+    fi
 }
 
 function setup_ipv6 {