diff --git a/f5/bigip/resource.py b/f5/bigip/resource.py index ac660b686..7bd0473b3 100644 --- a/f5/bigip/resource.py +++ b/f5/bigip/resource.py @@ -98,6 +98,7 @@ "orderreddict external dependency installed.") raise exc(message) import copy +import json import keyword import re import time @@ -404,7 +405,8 @@ def _modify(self, **patch): # Handles ConnectionAborted errors for i in range(0, 30): try: - response = session.patch(patch_uri, json=patch, **requests_params) + response = session.patch( + patch_uri, data=patch, **requests_params) break except ConnectionError as ex: if 'Connection aborted' in str(ex) and i < 29: @@ -451,6 +453,7 @@ def _prepare_request_json(self, kwargs): kwargs.pop('check') od.update(kwargs) return od + kwargs = json.dumps(kwargs, ensure_ascii=False).encode('utf-8') return kwargs def _iter_list_for_dicts(self, check_list): @@ -588,7 +591,8 @@ def _update(self, **kwargs): # @see https://github.com/requests/requests/issues/2364 for i in range(0, 30): try: - response = session.put(update_uri, json=data_dict, **requests_params) + response = session.put( + update_uri, data=data_dict, **requests_params) self._meta_data = temp_meta self._local_update(response.json()) break @@ -993,7 +997,8 @@ def _create(self, **kwargs): # Handles ConnectionAborted errors for i in range(0, 30): try: - response = session.post(_create_uri, json=kwargs, **requests_params) + response = session.post( + _create_uri, data=kwargs, **requests_params) break except ConnectionError as ex: if 'Connection aborted' in str(ex) and i < 29: diff --git a/f5/bigip/test/unit/test_resource.py b/f5/bigip/test/unit/test_resource.py index 8b238441b..fe92ff95c 100644 --- a/f5/bigip/test/unit/test_resource.py +++ b/f5/bigip/test/unit/test_resource.py @@ -272,23 +272,23 @@ def test_reduce_boolean_removes_enabled(self, fake_vs): fake_vs.create(partition="Common", name="test_create", enabled=False) session = fake_vs._meta_data['bigip']._meta_data['icr_session'] pos, kwargs = session.post.call_args - assert kwargs['json']['disabled'] is True - assert 'enabled' not in kwargs['json'] + assert '"disabled": true' in kwargs['data'] + assert 'enabled' not in kwargs['data'] def test_reduce_boolean_removes_disabled(self, fake_vs): fake_vs.create(partition='Common', name='test_create', disabled=False) session = fake_vs._meta_data['bigip']._meta_data['icr_session'] pos, kwargs = session.post.call_args - assert kwargs['json']['enabled'] is True - assert 'disabled' not in kwargs['json'] + assert '"enabled": true' in kwargs['data'] + assert 'disabled' not in kwargs['data'] def test_reduce_boolean_removes_nothing(self, fake_vs): fake_vs.create(partition='Common', name='test_create', enabled=True) session = fake_vs._meta_data['bigip']._meta_data['icr_session'] pos, kwargs = session.post.call_args - assert kwargs['json']['enabled'] is True - assert 'disabled' not in kwargs['json'] + assert '"enabled": true' in kwargs['data'] + assert 'disabled' not in kwargs['data'] def test_reduce_boolean_same_value(self, fake_vs): with pytest.raises(ExclusiveAttributesPresent) as ex: @@ -423,7 +423,7 @@ def test_Collection_removal(self): assert 'contained' in r.__dict__ r.update(a="b") submitted = r._meta_data['bigip']. \ - _meta_data['icr_session'].put.call_args[1]['json'] + _meta_data['icr_session'].put.call_args[1]['data'] assert 'contained' not in submitted def test_read_only_removal(self): @@ -440,29 +440,29 @@ def test_read_only_removal(self): assert 'READONLY' in r.__dict__ r.update(a="b") submitted = r._meta_data['bigip'].\ - _meta_data['icr_session'].put.call_args[1]['json'] + _meta_data['icr_session'].put.call_args[1]['data'] assert 'READONLY' not in submitted def test_reduce_boolean_removes_enabled(self, fake_rsrc): fake_rsrc.update(enabled=False) pos, kwargs = fake_rsrc._meta_data['bigip'].\ _meta_data['icr_session'].put.call_args - assert kwargs['json']['disabled'] is True - assert 'enabled' not in kwargs['json'] + assert '"disabled": true' in kwargs['data'] + assert 'enabled' not in kwargs['data'] def test_reduce_boolean_removes_disabled(self, fake_rsrc): fake_rsrc.update(disabled=False) pos, kwargs = fake_rsrc._meta_data['bigip'].\ _meta_data['icr_session'].put.call_args - assert kwargs['json']['enabled'] is True - assert 'disabled' not in kwargs['json'] + assert '"enabled": true' in kwargs['data'] + assert 'disabled' not in kwargs['data'] def test_reduce_boolean_removes_nothing(self, fake_rsrc): fake_rsrc.update(partition='Common', name='test_create', enabled=True) pos, kwargs = fake_rsrc._meta_data['bigip'].\ _meta_data['icr_session'].put.call_args - assert kwargs['json']['enabled'] is True - assert 'disabled' not in kwargs['json'] + assert '"enabled": true' in kwargs['data'] + assert 'disabled' not in kwargs['data'] def test_reduce_boolean_same_value(self, fake_rsrc): with pytest.raises(BooleansToReduceHaveSameValue) as ex: @@ -506,7 +506,7 @@ def test_Collection_removal(self): assert 'contained' in r.__dict__ r.modify(a="b") submitted = r._meta_data['bigip']. \ - _meta_data['icr_session'].patch.call_args[1]['json'] + _meta_data['icr_session'].patch.call_args[1]['data'] assert 'contained' not in submitted @@ -528,22 +528,22 @@ def test_reduce_boolean_removes_enabled(self, fake_rsrc): fake_rsrc.modify(enabled=False) pos, kwargs = fake_rsrc._meta_data['bigip'].\ _meta_data['icr_session'].patch.call_args - assert kwargs['json']['disabled'] is True - assert 'enabled' not in kwargs['json'] + assert '"disabled": true' in kwargs['data'] + assert 'enabled' not in kwargs['data'] def test_reduce_boolean_removes_disabled(self, fake_rsrc): fake_rsrc.modify(disabled=False) pos, kwargs = fake_rsrc._meta_data['bigip'].\ _meta_data['icr_session'].patch.call_args - assert kwargs['json']['enabled'] is True - assert 'disabled' not in kwargs['json'] + assert '"enabled": true' in kwargs['data'] + assert 'disabled' not in kwargs['data'] def test_reduce_boolean_removes_nothing(self, fake_rsrc): fake_rsrc.modify(partition='Common', name='test_create', enabled=True) pos, kwargs = fake_rsrc._meta_data['bigip'].\ _meta_data['icr_session'].patch.call_args - assert kwargs['json']['enabled'] is True - assert 'disabled' not in kwargs['json'] + assert '"enabled": true' in kwargs['data'] + assert 'disabled' not in kwargs['data'] def test_reduce_boolean_same_value(self, fake_rsrc): with pytest.raises(BooleansToReduceHaveSameValue) as ex: