Change in osmo-gsm-tester[master]: srsue: Create netns on demand

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Mon Feb 24 17:04:05 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17250 )

Change subject: srsue: Create netns on demand
......................................................................

srsue: Create netns on demand

Already existing script osmo-gsm-tester_netns_setup.sh is modified to
support only creating the entns without moving an iface to it.

Change-Id: I1b7e186b0146f932fe37fbea68e4dfa3120b7a74
---
M src/osmo_gsm_tester/remote.py
M src/osmo_gsm_tester/srs_ue.py
M src/osmo_gsm_tester/util.py
M utils/bin/osmo-gsm-tester_netns_setup.sh
4 files changed, 31 insertions(+), 11 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved



diff --git a/src/osmo_gsm_tester/remote.py b/src/osmo_gsm_tester/remote.py
index c5246ce..10ba069 100644
--- a/src/osmo_gsm_tester/remote.py
+++ b/src/osmo_gsm_tester/remote.py
@@ -171,6 +171,13 @@
         SETCAP_NETSYS_ADMIN_BIN = 'osmo-gsm-tester_setcap_netsys_admin.sh'
         self.run_remote_sync('setcap-netsysadm', ('sudo', SETCAP_NETSYS_ADMIN_BIN, binary_path))
 
+    def create_netns(self, netns):
+        '''
+        It creates the netns if it doesn't already exist.
+        '''
+        NETNS_SETUP_BIN = 'osmo-gsm-tester_netns_setup.sh'
+        self.run_remote_sync('create_netns', ('sudo', NETNS_SETUP_BIN, netns))
+
     def change_elf_rpath(self, binary_path, paths):
         '''
         Change RPATH field in ELF executable binary.
diff --git a/src/osmo_gsm_tester/srs_ue.py b/src/osmo_gsm_tester/srs_ue.py
index 4a99ad9..0accaea 100644
--- a/src/osmo_gsm_tester/srs_ue.py
+++ b/src/osmo_gsm_tester/srs_ue.py
@@ -125,6 +125,9 @@
         self.log('Applying CAP_SYS_ADMIN+CAP_NET_ADMIN capability to srsue')
         self.rem_host.setcap_netsys_admin(remote_binary)
 
+        self.log('Creating netns %s' % self.netns())
+        self.rem_host.create_netns(self.netns())
+
         #'strace', '-ff',
         args = (remote_binary, self.remote_config_file,
                 '--phy.nof_phy_threads=1',
@@ -159,6 +162,9 @@
         self.log('Applying CAP_SYS_ADMIN+CAP_NET_ADMIN capability to srsue')
         util.setcap_netsys_admin(binary, self.run_dir.new_dir('setcap_netsys_admin'))
 
+        self.log('Creating netns %s' % self.netns())
+        util.create_netns(self.netns(), self.run_dir.new_dir('create_netns'))
+
         args = (binary, os.path.abspath(self.config_file),
                 '--phy.nof_phy_threads=1',
                 '--gw.netns=' + self.netns(),
diff --git a/src/osmo_gsm_tester/util.py b/src/osmo_gsm_tester/util.py
index de37078..a5b2bbf 100644
--- a/src/osmo_gsm_tester/util.py
+++ b/src/osmo_gsm_tester/util.py
@@ -110,15 +110,22 @@
     proc = Process(SETCAP_NETSYS_ADMIN_BIN, run_dir, ['sudo', SETCAP_NETSYS_ADMIN_BIN, binary])
     proc.launch_sync()
 
-def move_iface_to_netns(ifname, netns, run_dir):
+def create_netns(netns, run_dir):
     '''
-    Moves an iface to a netns. It creates the netns if it doesn't exist.
-    fail_iface_not_found=False is handy in order to assume the iface is already
-    in another netns and thus cannot be foud.
+    It creates the netns if it doesn't already exist.
     '''
     from .process import Process
     NETNS_SETUP_BIN = 'osmo-gsm-tester_netns_setup.sh'
-    proc = Process('move_netns', run_dir, ['sudo', NETNS_SETUP_BIN, ifname, netns])
+    proc = Process('create_netns', ('sudo', NETNS_SETUP_BIN, netns))
+    proc.launch_sync()
+
+def move_iface_to_netns(ifname, netns, run_dir):
+    '''
+    Moves an iface to a netns. It creates the netns if it doesn't exist.
+    '''
+    from .process import Process
+    NETNS_SETUP_BIN = 'osmo-gsm-tester_netns_setup.sh'
+    proc = Process('move_netns', run_dir, ['sudo', NETNS_SETUP_BIN, netns, ifname])
     proc.launch_sync()
 
 def import_path_prepend(pathname):
diff --git a/utils/bin/osmo-gsm-tester_netns_setup.sh b/utils/bin/osmo-gsm-tester_netns_setup.sh
index 1600c44..e3d09ea 100755
--- a/utils/bin/osmo-gsm-tester_netns_setup.sh
+++ b/utils/bin/osmo-gsm-tester_netns_setup.sh
@@ -1,11 +1,7 @@
 #!/bin/bash -e
 
-ifname="$1"
-netns="$2"
-shift
-shift
-
-
+netns="$1"
+ifname="$2" # optional
 
 if [ -f "/var/run/netns/${netns}" ]; then
     echo "netns $netns already exists"
@@ -14,6 +10,10 @@
     ip netns add "$netns"
 fi
 
+if [ "x$ifname" = "x" ]; then
+    exit 0
+fi
+
 if [ -d "/sys/class/net/${ifname}" ]; then
     echo "Moving iface $ifname to netns $netns"
     ip link set $ifname netns $netns

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17250
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Change-Id: I1b7e186b0146f932fe37fbea68e4dfa3120b7a74
Gerrit-Change-Number: 17250
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200224/64e71698/attachment.htm>


More information about the gerrit-log mailing list