Skip to content

Commit 7dcdad6

Browse files
authored
Fixes api calls (#146)
The changes to debug required that kwargs to certain commands be differentiated. This is an attempt at making that work
1 parent f907290 commit 7dcdad6

2 files changed

Lines changed: 49 additions & 13 deletions

File tree

icontrol/session.py

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -447,10 +447,12 @@ def delete(self, uri, **kwargs):
447447
:type partition: str
448448
:param \**kwargs: The :meth:`reqeusts.Session.delete` optional params
449449
"""
450-
req = requests.Request('DELETE', uri, **kwargs)
450+
args1 = get_request_args(kwargs)
451+
args2 = get_send_args(kwargs)
452+
req = requests.Request('DELETE', uri, **args1)
451453
prepared = self.session.prepare_request(req)
452454
self._debug.append(debug_prepared_request(prepared))
453-
return self.session.send(prepared)
455+
return self.session.send(prepared, **args2)
454456

455457
@decorate_HTTP_verb_method
456458
def get(self, uri, **kwargs):
@@ -472,10 +474,12 @@ def get(self, uri, **kwargs):
472474
:type partition: str
473475
:param \**kwargs: The :meth:`reqeusts.Session.get` optional params
474476
"""
475-
req = requests.Request('GET', uri, **kwargs)
477+
args1 = get_request_args(kwargs)
478+
args2 = get_send_args(kwargs)
479+
req = requests.Request('GET', uri, **args1)
476480
prepared = self.session.prepare_request(req)
477481
self._debug.append(debug_prepared_request(prepared))
478-
return self.session.send(prepared)
482+
return self.session.send(prepared, **args2)
479483

480484
@decorate_HTTP_verb_method
481485
def patch(self, uri, data=None, **kwargs):
@@ -499,10 +503,12 @@ def patch(self, uri, data=None, **kwargs):
499503
:type partition: str
500504
:param \**kwargs: The :meth:`reqeusts.Session.patch` optional params
501505
"""
502-
req = requests.Request('PATCH', uri, data=data, **kwargs)
506+
args1 = get_request_args(kwargs)
507+
args2 = get_send_args(kwargs)
508+
req = requests.Request('PATCH', uri, data=data, **args1)
503509
prepared = self.session.prepare_request(req)
504510
self._debug.append(debug_prepared_request(prepared))
505-
return self.session.send(prepared)
511+
return self.session.send(prepared, **args2)
506512

507513
@decorate_HTTP_verb_method
508514
def post(self, uri, data=None, json=None, **kwargs):
@@ -528,10 +534,12 @@ def post(self, uri, data=None, json=None, **kwargs):
528534
:type partition: str
529535
:param \**kwargs: The :meth:`reqeusts.Session.post` optional params
530536
"""
531-
req = requests.Request('POST', uri, data=data, json=json, **kwargs)
537+
args1 = get_request_args(kwargs)
538+
args2 = get_send_args(kwargs)
539+
req = requests.Request('POST', uri, data=data, json=json, **args1)
532540
prepared = self.session.prepare_request(req)
533541
self._debug.append(debug_prepared_request(prepared))
534-
return self.session.send(prepared)
542+
return self.session.send(prepared, **args2)
535543

536544
@decorate_HTTP_verb_method
537545
def put(self, uri, data=None, **kwargs):
@@ -557,10 +565,12 @@ def put(self, uri, data=None, **kwargs):
557565
:type partition: str
558566
:param **kwargs: The :meth:`reqeusts.Session.put` optional params
559567
"""
560-
req = requests.Request('PUT', uri, data=data, **kwargs)
568+
args1 = get_request_args(kwargs)
569+
args2 = get_send_args(kwargs)
570+
req = requests.Request('PUT', uri, data=data, **args1)
561571
prepared = self.session.prepare_request(req)
562572
self._debug.append(debug_prepared_request(prepared))
563-
return self.session.send(prepared)
573+
return self.session.send(prepared, **args2)
564574

565575
def append_user_agent(self, user_agent):
566576
"""Append text to the User-Agent header for the request.
@@ -599,7 +609,24 @@ def debug_prepared_request(request):
599609
result = "curl -k -X {0} {1}".format(request.method.upper(), request.url)
600610
for k, v in iteritems(request.headers):
601611
result = result + " -H '{0}: {1}'".format(k, v)
602-
if request.body:
603-
kwargs = json.loads(request.body)
604-
result = result + " -d '" + json.dumps(kwargs, sort_keys=True) + "'"
612+
if any(v == 'application/json' for k, v in iteritems(request.headers)):
613+
if request.body:
614+
kwargs = json.loads(request.body)
615+
result = result + " -d '" + json.dumps(kwargs, sort_keys=True) + "'"
616+
return result
617+
618+
619+
def get_send_args(kwargs):
620+
result = []
621+
for arg in ['stream', 'timeout', 'verify', 'cert', 'proxies']:
622+
result.append((arg, kwargs.pop(arg, None)))
623+
result = dict([(k, v) for k, v in result if v is not None])
624+
return result
625+
626+
627+
def get_request_args(kwargs):
628+
result = []
629+
for arg in ['headers', 'files', 'data', 'json', 'params', 'auth', 'cookies', 'hooks']:
630+
result.append((arg, kwargs.pop(arg, None)))
631+
result = dict([(k, v) for k, v in result if v is not None])
605632
return result

icontrol/test/functional/test_session.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -675,3 +675,12 @@ def test_using_tmos_auth_provider(GET_URL, opt_bigip, opt_username, opt_password
675675
response = icr1.get(GET_URL)
676676
assert response.status_code == 200
677677
assert response.json()
678+
679+
680+
def test_debug_tracing(request, POST_URL, GET_URL, opt_bigip, opt_username, opt_password):
681+
icr1 = iControlRESTSession(opt_username, opt_password, auth_provider='tmos')
682+
icr1.get(GET_URL)
683+
response = icr1.post(POST_URL, json=nat_data)
684+
response.json()
685+
teardown_nat(request, icr1, POST_URL, nat_data['name'], nat_data['partition'])
686+
assert len(icr1._debug) > 0

0 commit comments

Comments
 (0)