<p>Max has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12473">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ctrl2cgi: update shared helper<br><br>* split hash generation into simpler functions<br>* move them into helper file<br>* split log init into separate function<br><br>This facilitates code sharing with new version of ctrl2cgi proxy in<br>folow-up patches.<br><br>Change-Id: Ic5c349349d2c246f934d6701435b1a2d9de77de1<br>Related: SYS#4399<br>---<br>M osmopy/trap_helper.py<br>M scripts/ctrl2cgi.py<br>2 files changed, 32 insertions(+), 24 deletions(-)<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/73/12473/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 3e80c6d..d942cd2 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, datetime, signal, logging, logging.handlers</span><br><span style="color: hsl(120, 100%, 40%);">+import hashlib, sys, os, datetime, signal, logging, logging.handlers</span><br><span> from functools import partial</span><br><span> from osmopy.osmo_ipa import Ctrl</span><br><span> </span><br><span>@@ -95,16 +95,39 @@</span><br><span>             sys.argv.remove(dbg2)</span><br><span>     os.execl(path, script, *sys.argv[1:])</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+def add_keys(inp, params, l):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Add given list of keys to input string.</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    for key in l:</span><br><span style="color: hsl(120, 100%, 40%);">+        inp += str(params.get(key))</span><br><span style="color: hsl(120, 100%, 40%);">+    return inp</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def gen_hash(params, skey):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Make mandatory parameter for HTTP request.</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    inp = add_keys('', params, ['time_stamp', 'position_validity', 'admin_status', 'policy_status'])</span><br><span style="color: hsl(120, 100%, 40%);">+    inp += skey</span><br><span style="color: hsl(120, 100%, 40%);">+    inp = add_keys(inp, params, ['bsc_id', 'lat', 'lon', 'position_validity'])</span><br><span style="color: hsl(120, 100%, 40%);">+    m = hashlib.md5()</span><br><span style="color: hsl(120, 100%, 40%);">+    m.update(inp.encode('utf-8'))</span><br><span style="color: hsl(120, 100%, 40%);">+    return m.hexdigest()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def log_init(name, is_debug):</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    Initialize stdout logging.</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+    log = logging.getLogger(name)</span><br><span style="color: hsl(120, 100%, 40%);">+    log.setLevel(logging.DEBUG if is_debug else logging.INFO)</span><br><span style="color: hsl(120, 100%, 40%);">+    log.addHandler(logging.StreamHandler(sys.stdout))</span><br><span style="color: hsl(120, 100%, 40%);">+    return log</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> def debug_init(name, is_debug):</span><br><span>     """</span><br><span>     Initialize signal handlers and logging</span><br><span>     """</span><br><span style="color: hsl(0, 100%, 40%);">-    log = logging.getLogger(name)</span><br><span style="color: hsl(0, 100%, 40%);">-    if is_debug:</span><br><span style="color: hsl(0, 100%, 40%);">-        log.setLevel(logging.DEBUG)</span><br><span style="color: hsl(0, 100%, 40%);">-    else:</span><br><span style="color: hsl(0, 100%, 40%);">-        log.setLevel(logging.INFO)</span><br><span style="color: hsl(0, 100%, 40%);">-    log.addHandler(logging.StreamHandler(sys.stdout))</span><br><span style="color: hsl(120, 100%, 40%);">+    log = log_init(name, is_debug)</span><br><span> </span><br><span>     reboot = partial(reloader, os.path.abspath(__file__), os.path.basename(__file__), log, '-d', '--debug') # keep in sync with caller's add_argument()</span><br><span>     signal.signal(signal.SIGHUP, reboot)</span><br><span>diff --git a/scripts/ctrl2cgi.py b/scripts/ctrl2cgi.py</span><br><span>index bb5c93e..95ff788 100755</span><br><span>--- a/scripts/ctrl2cgi.py</span><br><span>+++ b/scripts/ctrl2cgi.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%);">-__version__ = "0.1.0" # bump this on every non-trivial change</span><br><span style="color: hsl(120, 100%, 40%);">+__version__ = "0.1.1" # bump this on every non-trivial change</span><br><span> </span><br><span> import argparse, os, logging, logging.handlers, datetime</span><br><span> import hashlib</span><br><span>@@ -32,7 +32,7 @@</span><br><span> from distutils.version import StrictVersion as V</span><br><span> from twisted.internet import defer, reactor</span><br><span> from treq import post, collect</span><br><span style="color: hsl(0, 100%, 40%);">-from osmopy.trap_helper import debug_init, get_type, get_r, p_h, make_params, comm_proc</span><br><span style="color: hsl(120, 100%, 40%);">+from osmopy.trap_helper import debug_init, get_type, get_r, p_h, gen_hash, make_params, comm_proc</span><br><span> from osmopy.twisted_ipa import CTRL, IPAFactory, __version__ as twisted_ipa_version</span><br><span> from osmopy.osmo_ipa import Ctrl</span><br><span> </span><br><span>@@ -57,21 +57,6 @@</span><br><span>     log_duration(log, bid, ts, ts_http)</span><br><span>     comm_proc(decoded.get('commands'), bid, f, log)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-def gen_hash(params, skey):</span><br><span style="color: hsl(0, 100%, 40%);">-    """</span><br><span style="color: hsl(0, 100%, 40%);">-    Make mandatory parameter for http request</span><br><span style="color: hsl(0, 100%, 40%);">-    """</span><br><span style="color: hsl(0, 100%, 40%);">-    inp = ''</span><br><span style="color: hsl(0, 100%, 40%);">-    for key in ['time_stamp', 'position_validity', 'admin_status', 'policy_status']:</span><br><span style="color: hsl(0, 100%, 40%);">-        inp += str(params.get(key))</span><br><span style="color: hsl(0, 100%, 40%);">-    inp += skey</span><br><span style="color: hsl(0, 100%, 40%);">-    for key in ['bsc_id', 'lat', 'lon', 'position_validity']:</span><br><span style="color: hsl(0, 100%, 40%);">-        inp += str(params.get(key))</span><br><span style="color: hsl(0, 100%, 40%);">-    m = hashlib.md5()</span><br><span style="color: hsl(0, 100%, 40%);">-    m.update(inp.encode('utf-8'))</span><br><span style="color: hsl(0, 100%, 40%);">-    res = m.hexdigest()</span><br><span style="color: hsl(0, 100%, 40%);">-    return res</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> def make_async_req(ts, dst, par, f_write, f_log, tout):</span><br><span>     """</span><br><span>     Assemble deferred request parameters and partially instantiate response handler</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12473">change 12473</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/12473"/><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: Ic5c349349d2c246f934d6701435b1a2d9de77de1 </div>
<div style="display:none"> Gerrit-Change-Number: 12473 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>