[NFVBENCH-159] Python3 fix for get_intel_pci()
[nfvbench.git] / nfvbench / utils.py
index ecbb55a..94cc11d 100644 (file)
@@ -23,7 +23,7 @@ import errno
 import fcntl
 from functools import wraps
 import json
-from log import LOG
+from .log import LOG
 
 
 class TimeoutError(Exception):
@@ -74,7 +74,7 @@ def save_json_result(result, json_file, std_json_path, service_chain, service_ch
 
 def byteify(data, ignore_dicts=False):
     # if this is a unicode string, return its string representation
-    if isinstance(data, unicode):
+    if isinstance(data, str):
         return data.encode('utf-8')
     # if this is a list of values, return list of byteified values
     if isinstance(data, list):
@@ -83,7 +83,7 @@ def byteify(data, ignore_dicts=False):
     # but only if we haven't already byteified it
     if isinstance(data, dict) and not ignore_dicts:
         return {byteify(key, ignore_dicts=ignore_dicts): byteify(value, ignore_dicts=ignore_dicts)
-                for key, value in data.iteritems()}
+                for key, value in list(data.items())}
     # if it's anything else, return it in its original form
     return data
 
@@ -113,8 +113,8 @@ def get_intel_pci(nic_slot=None, nic_ports=None):
 
     if nic_slot and nic_ports:
         dmidecode = subprocess.check_output(['dmidecode', '-t', 'slot'])
-        regex = r"(?<=SlotID:%s).*?(....:..:..\..)" % nic_slot
-        match = re.search(regex, dmidecode, flags=re.DOTALL)
+        regex = r"(?<=SlotID:{}).*?(....:..:..\..)".format(nic_slot)
+        match = re.search(regex, dmidecode.decode('utf-8'), flags=re.DOTALL)
         if not match:
             return None
 
@@ -144,7 +144,7 @@ def get_intel_pci(nic_slot=None, nic_ports=None):
         devices = ''
 
     for driver in ['i40e', 'ixgbe']:
-        matches = re.findall(regex.format(hx=hx, driver=driver), devices)
+        matches = re.findall(regex.format(hx=hx, driver=driver), devices.decode("utf-8"))
         if not matches:
             continue
 
@@ -160,9 +160,8 @@ def get_intel_pci(nic_slot=None, nic_ports=None):
                                            stdout=subprocess.PIPE,
                                            stderr=subprocess.PIPE)
                 intf_info, _ = process.communicate()
-                if not re.search('team_slave|bond_slave', intf_info):
+                if not re.search('team_slave|bond_slave', intf_info.decode("utf-8")):
                     pcis.append(port[1])
-
             if len(pcis) == 2:
                 break