<p>Max has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/11951">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Update trap helper<br><br>* add missing import<br>* update docs<br>* add helper functions<br><br>Change-Id: Ie6dc8808efc76ad96b400913e5caa405bce7d970<br>Related: SYS#4399<br>---<br>M osmopy/trap_helper.py<br>1 file changed, 40 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/python/osmo-python-tests refs/changes/51/11951/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/osmopy/trap_helper.py b/osmopy/trap_helper.py</span><br><span>index 4704564..f7a64c8 100644</span><br><span>--- a/osmopy/trap_helper.py</span><br><span>+++ b/osmopy/trap_helper.py</span><br><span>@@ -22,7 +22,7 @@</span><br><span>  */</span><br><span> """</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-import sys, os, signal, logging, logging.handlers</span><br><span style="color: hsl(120, 100%, 40%);">+import sys, os, datetime, signal, logging, logging.handlers</span><br><span> from functools import partial</span><br><span> from osmopy.twisted_ipa import CTRL</span><br><span> from twisted.internet import defer</span><br><span>@@ -35,6 +35,42 @@</span><br><span> # keys from OpenBSC openbsc/src/libbsc/bsc_vty.c</span><br><span> fix = { 'invalid' : 0, 'fix2d' : 1, 'fix3d' : 1 } # SOAP server treats it as boolean but expects int</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+def split_type(v):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Split TRAP type into list</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    (l, _) = v.split()</span><br><span style="color: hsl(120, 100%, 40%);">+    return l.split('.')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def get_r(v):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Split TRAP record</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    (_, r) = v.split()</span><br><span style="color: hsl(120, 100%, 40%);">+    return r</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def get_type(v):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Get TRAP type</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    loc = split_type(v)</span><br><span style="color: hsl(120, 100%, 40%);">+    return loc[-1]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def make_params(bsc, data):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Make parameters for request</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    (ts, fx, lat, lon, _, opr, adm, pol, _, _) = data.split(',')</span><br><span style="color: hsl(120, 100%, 40%);">+    tstamp = datetime.datetime.fromtimestamp(float(ts)).isoformat()</span><br><span style="color: hsl(120, 100%, 40%);">+    return {'bsc_id': bsc, 'lon': lon, 'lat': lat, 'position_validity': fix.get(fx, 0), 'time_stamp': tstamp, 'oper_status': oper.get(opr, 2), 'admin_status': admin.get(adm, 2), 'policy_status': policy.get(pol, 3) }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def p_h(v):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Parse helper for method dispatch: expected format is net.0.bsc.666.bts.2.trx.1</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    loc = split_type(v)</span><br><span style="color: hsl(120, 100%, 40%);">+    return partial(lambda a, i: a[i] if len(a) > i else None, loc)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> class Trap(CTRL):</span><br><span>     """</span><br><span>     TRAP handler (agnostic to factory's client object)</span><br><span>@@ -109,6 +145,9 @@</span><br><span>     os.execl(path, script, *sys.argv[1:])</span><br><span> </span><br><span> def debug_init(name, is_debug, output):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Initialize signal handlers and logging</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span>     log = logging.getLogger(name)</span><br><span>     if is_debug:</span><br><span>         log.setLevel(logging.DEBUG)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11951">change 11951</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/11951"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: python/osmo-python-tests </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ie6dc8808efc76ad96b400913e5caa405bce7d970 </div>
<div style="display:none"> Gerrit-Change-Number: 11951 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>