summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane/client_utils/external_packages.py
diff options
context:
space:
mode:
authorYaroslav Brustinov <ybrustin@cisco.com>2016-03-24 21:08:56 +0200
committerYaroslav Brustinov <ybrustin@cisco.com>2016-03-24 21:08:56 +0200
commit764ef2e77a5f344bf1f30f717f610f49d21f869d (patch)
treefbc2fa711e3b4163094b57f551de231d11cffae5 /scripts/automation/trex_control_plane/client_utils/external_packages.py
parent6bee94506d7ed8f6843be352acf61112a728fa0b (diff)
return client_utils
Diffstat (limited to 'scripts/automation/trex_control_plane/client_utils/external_packages.py')
-rw-r--r--scripts/automation/trex_control_plane/client_utils/external_packages.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/scripts/automation/trex_control_plane/client_utils/external_packages.py b/scripts/automation/trex_control_plane/client_utils/external_packages.py
new file mode 100644
index 00000000..c682dc18
--- /dev/null
+++ b/scripts/automation/trex_control_plane/client_utils/external_packages.py
@@ -0,0 +1,72 @@
+#!/router/bin/python
+
+import sys
+import os
+import warnings
+
+CURRENT_PATH = os.path.dirname(os.path.realpath(__file__))
+ROOT_PATH = os.path.abspath(os.path.join(CURRENT_PATH, os.pardir)) # path to trex_control_plane directory
+PATH_TO_PYTHON_LIB = os.path.abspath(os.path.join(ROOT_PATH, os.pardir, os.pardir, 'external_libs'))
+
+CLIENT_UTILS_MODULES = ['dpkt-1.8.6',
+ 'yaml-3.11',
+ 'texttable-0.8.4',
+ 'scapy-2.3.1'
+ ]
+
+def import_client_utils_modules():
+
+ # must be in a higher priority
+ sys.path.insert(0, PATH_TO_PYTHON_LIB)
+
+ sys.path.append(ROOT_PATH)
+ import_module_list(CLIENT_UTILS_MODULES)
+
+
+def import_module_list(modules_list):
+ assert(isinstance(modules_list, list))
+ for p in modules_list:
+ full_path = os.path.join(PATH_TO_PYTHON_LIB, p)
+ fix_path = os.path.normcase(full_path)
+ sys.path.insert(1, full_path)
+
+
+ import_platform_dirs()
+
+
+
+def import_platform_dirs ():
+ # handle platform dirs
+
+ # try fedora 18 first and then cel5.9
+ # we are using the ZMQ module to determine the right platform
+
+ full_path = os.path.join(PATH_TO_PYTHON_LIB, 'platform/fedora18')
+ fix_path = os.path.normcase(full_path)
+ sys.path.insert(0, full_path)
+ try:
+ # try to import and delete it from the namespace
+ import zmq
+ del zmq
+ return
+ except:
+ sys.path.pop(0)
+ pass
+
+ full_path = os.path.join(PATH_TO_PYTHON_LIB, 'platform/cel59')
+ fix_path = os.path.normcase(full_path)
+ sys.path.insert(0, full_path)
+ try:
+ # try to import and delete it from the namespace
+ import zmq
+ del zmq
+ return
+
+ except:
+ sys.path.pop(0)
+ sys.modules['zmq'] = None
+ warnings.warn("unable to determine platform type for ZMQ import")
+
+
+
+import_client_utils_modules()