[EDGEPOD-231] Add helm chart for BESS based OMEC user plane

Change-Id: I4321beca6731b261fcb62a7c880318d865e64542
diff --git a/omec/omec-user-plane/files/utils.py b/omec/omec-user-plane/files/utils.py
new file mode 100644
index 0000000..860a65d
--- /dev/null
+++ b/omec/omec-user-plane/files/utils.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: Apache-2.0
+# Copyright 2020-present Open Networking Foundation
+# Copyright(c) 2019 Intel Corporation
+
+import os
+import signal
+import socket
+import sys
+
+import iptools
+import json
+import psutil
+from pyroute2 import IPDB
+
+
+def exit(code, msg):
+    print(msg)
+    sys.exit(code)
+
+
+def getpid(process_name):
+    for proc in psutil.process_iter(attrs=['pid', 'name']):
+        if process_name == proc.info['name']:
+            return proc.info['pid']
+
+
+def getpythonpid(process_name):
+    for proc in psutil.process_iter(attrs=['pid', 'cmdline']):
+        if len(proc.info['cmdline']) < 2:
+            continue
+        if process_name in proc.info['cmdline'][1] and 'python' in proc.info['cmdline'][0]:
+            return proc.info['pid']
+    return
+
+
+def get_json_conf(path, dump):
+    conf = json.loads(open(path).read())
+    if dump:
+        print(json.dumps(conf, indent=4, sort_keys=True))
+    return conf
+
+
+def get_env(varname, default=None):
+    try:
+        var = os.environ[varname]
+        return var
+    except KeyError:
+        if default is not None:
+            return '{}'.format(default)
+        else:
+            exit(1, 'Empty env var {}'.format(varname))
+
+
+def ips_by_interface(name):
+    ipdb = IPDB()
+    return [ipobj[0] for ipobj in ipdb.interfaces[name]['ipaddr'].ipv4]
+
+
+def mac_by_interface(name):
+    ipdb = IPDB()
+    return ipdb.interfaces[name]['address']
+
+
+def mac2hex(mac):
+    return int(mac.replace(':', ''), 16)
+
+
+def peer_by_interface(name):
+    ipdb = IPDB()
+    try:
+        peer_idx = ipdb.interfaces[name]['link']
+        peer_name = ipdb.interfaces[peer_idx]['ifname']
+    except:
+        raise Exception('veth interface {} does not exist'.format(name))
+    else:
+        return peer_name
+
+
+def aton(ip):
+    return socket.inet_aton(ip)
+
+
+def validate_cidr(cidr):
+    return iptools.ipv4.validate_cidr(cidr)
+
+
+def cidr2mask(cidr):
+    _, prefix = cidr.split('/')
+    return format(0xffffffff << (32 - int(prefix)), '08x')
+
+
+def cidr2block(cidr):
+    return iptools.ipv4.cidr2block(cidr)
+
+
+def ip2hex(ip):
+    return iptools.ipv4.ip2hex(ip)
+
+
+def ip2long(ip):
+    return iptools.ipv4.ip2long(ip)
+
+
+def get_process_affinity():
+    return psutil.Process().cpu_affinity()