Skip to content

Commit 826208e

Browse files
authored
Makes debug optional (#149)
The debug setting, when enabled, was causing memory usage to increase in long-running applications. This patch makes this debugging optional and turns off debugging by default
1 parent 917e451 commit 826208e

2 files changed

Lines changed: 32 additions & 7 deletions

File tree

icontrol/session.py

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@
8787
from urlparse import urlsplit
8888

8989

90+
BOOLEANS_TRUE = frozenset(('y', 'yes', 'on', '1', 'true', 't', 1, 1.0, True))
91+
BOOLEANS_FALSE = frozenset(('n', 'no', 'off', '0', 'false', 'f', 0, 0.0, False))
92+
BOOLEANS = BOOLEANS_TRUE.union(BOOLEANS_FALSE)
93+
94+
9095
def _validate_icruri(base_uri):
9196
# The icr_uri should specify https, the server name/address, and the path
9297
# to the REST-or-tm management interface "/mgmt/tm/"
@@ -379,7 +384,8 @@ def __init__(self, username, password, **kwargs):
379384
"""
380385

381386
# Used for holding debug information
382-
self._debug = []
387+
self._debug_output = []
388+
self._debug = False
383389

384390
verify = kwargs.pop('verify', False)
385391
timeout = kwargs.pop('timeout', 30)
@@ -436,6 +442,19 @@ def __init__(self, username, password, **kwargs):
436442
if user_agent:
437443
self.append_user_agent(user_agent)
438444

445+
@property
446+
def debug(self):
447+
return self._debug
448+
449+
@debug.setter
450+
def debug(self, value):
451+
if value in BOOLEANS:
452+
self._debug = value
453+
454+
@property
455+
def debug_output(self):
456+
return self._debug_output
457+
439458
@decorate_HTTP_verb_method
440459
def delete(self, uri, **kwargs):
441460
"""Sends a HTTP DELETE command to the BIGIP REST Server.
@@ -460,7 +479,8 @@ def delete(self, uri, **kwargs):
460479
args2 = get_send_args(kwargs)
461480
req = requests.Request('DELETE', uri, **args1)
462481
prepared = self.session.prepare_request(req)
463-
self._debug.append(debug_prepared_request(prepared))
482+
if self.debug:
483+
self._debug_output.append(debug_prepared_request(prepared))
464484
return self.session.send(prepared, **args2)
465485

466486
@decorate_HTTP_verb_method
@@ -487,7 +507,8 @@ def get(self, uri, **kwargs):
487507
args2 = get_send_args(kwargs)
488508
req = requests.Request('GET', uri, **args1)
489509
prepared = self.session.prepare_request(req)
490-
self._debug.append(debug_prepared_request(prepared))
510+
if self.debug:
511+
self._debug_output.append(debug_prepared_request(prepared))
491512
return self.session.send(prepared, **args2)
492513

493514
@decorate_HTTP_verb_method
@@ -516,7 +537,8 @@ def patch(self, uri, data=None, **kwargs):
516537
args2 = get_send_args(kwargs)
517538
req = requests.Request('PATCH', uri, data=data, **args1)
518539
prepared = self.session.prepare_request(req)
519-
self._debug.append(debug_prepared_request(prepared))
540+
if self.debug:
541+
self._debug_output.append(debug_prepared_request(prepared))
520542
return self.session.send(prepared, **args2)
521543

522544
@decorate_HTTP_verb_method
@@ -547,7 +569,8 @@ def post(self, uri, data=None, json=None, **kwargs):
547569
args2 = get_send_args(kwargs)
548570
req = requests.Request('POST', uri, data=data, json=json, **args1)
549571
prepared = self.session.prepare_request(req)
550-
self._debug.append(debug_prepared_request(prepared))
572+
if self.debug:
573+
self._debug_output.append(debug_prepared_request(prepared))
551574
return self.session.send(prepared, **args2)
552575

553576
@decorate_HTTP_verb_method
@@ -578,7 +601,8 @@ def put(self, uri, data=None, **kwargs):
578601
args2 = get_send_args(kwargs)
579602
req = requests.Request('PUT', uri, data=data, **args1)
580603
prepared = self.session.prepare_request(req)
581-
self._debug.append(debug_prepared_request(prepared))
604+
if self.debug:
605+
self._debug.append(debug_prepared_request(prepared))
582606
return self.session.send(prepared, **args2)
583607

584608
def append_user_agent(self, user_agent):

icontrol/test/functional/test_session.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,8 +679,9 @@ def test_using_tmos_auth_provider(GET_URL, opt_bigip, opt_username, opt_password
679679

680680
def test_debug_tracing(request, POST_URL, GET_URL, opt_bigip, opt_username, opt_password):
681681
icr1 = iControlRESTSession(opt_username, opt_password, auth_provider='tmos')
682+
icr1.debug = True
682683
icr1.get(GET_URL)
683684
response = icr1.post(POST_URL, json=nat_data)
684685
response.json()
685686
teardown_nat(request, icr1, POST_URL, nat_data['name'], nat_data['partition'])
686-
assert len(icr1._debug) > 0
687+
assert len(icr1.debug_output) > 0

0 commit comments

Comments
 (0)