Skip to content

Commit 1b8e9a6

Browse files
OPENSTACK-2894: use utf-8 code for bigip configuration
1 parent b4660d1 commit 1b8e9a6

File tree

2 files changed

+45
-27
lines changed

2 files changed

+45
-27
lines changed

f5/bigip/resource.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
"orderreddict external dependency installed.")
9999
raise exc(message)
100100
import copy
101+
import json
101102
import keyword
102103
import re
103104
import time
@@ -404,7 +405,8 @@ def _modify(self, **patch):
404405
# Handles ConnectionAborted errors
405406
for i in range(0, 30):
406407
try:
407-
response = session.patch(patch_uri, json=patch, **requests_params)
408+
response = session.patch(
409+
patch_uri, data=patch, **requests_params)
408410
break
409411
except ConnectionError as ex:
410412
if 'Connection aborted' in str(ex) and i < 29:
@@ -451,6 +453,7 @@ def _prepare_request_json(self, kwargs):
451453
kwargs.pop('check')
452454
od.update(kwargs)
453455
return od
456+
kwargs = json.dumps(kwargs, ensure_ascii=False).encode('utf-8')
454457
return kwargs
455458

456459
def _iter_list_for_dicts(self, check_list):
@@ -588,7 +591,8 @@ def _update(self, **kwargs):
588591
# @see https://github.com/requests/requests/issues/2364
589592
for i in range(0, 30):
590593
try:
591-
response = session.put(update_uri, json=data_dict, **requests_params)
594+
response = session.put(
595+
update_uri, data=data_dict, **requests_params)
592596
self._meta_data = temp_meta
593597
self._local_update(response.json())
594598
break
@@ -993,7 +997,8 @@ def _create(self, **kwargs):
993997
# Handles ConnectionAborted errors
994998
for i in range(0, 30):
995999
try:
996-
response = session.post(_create_uri, json=kwargs, **requests_params)
1000+
response = session.post(
1001+
_create_uri, data=kwargs, **requests_params)
9971002
break
9981003
except ConnectionError as ex:
9991004
if 'Connection aborted' in str(ex) and i < 29:

f5/bigip/test/unit/test_resource.py

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import mock
2525
import pytest
2626
import requests
27+
import sys
2728

2829
from f5.bigip.resource import _missing_required_parameters
2930
from f5.bigip.resource import AsmResource
@@ -272,23 +273,26 @@ def test_reduce_boolean_removes_enabled(self, fake_vs):
272273
fake_vs.create(partition="Common", name="test_create", enabled=False)
273274
session = fake_vs._meta_data['bigip']._meta_data['icr_session']
274275
pos, kwargs = session.post.call_args
275-
assert kwargs['json']['disabled'] is True
276-
assert 'enabled' not in kwargs['json']
276+
if sys.version_info.major == 2:
277+
assert '"disabled": true' in kwargs['data']
278+
assert 'enabled' not in kwargs['data']
277279

278280
def test_reduce_boolean_removes_disabled(self, fake_vs):
279281
fake_vs.create(partition='Common', name='test_create',
280282
disabled=False)
281283
session = fake_vs._meta_data['bigip']._meta_data['icr_session']
282284
pos, kwargs = session.post.call_args
283-
assert kwargs['json']['enabled'] is True
284-
assert 'disabled' not in kwargs['json']
285+
if sys.version_info.major == 2:
286+
assert '"enabled": true' in kwargs['data']
287+
assert 'disabled' not in kwargs['data']
285288

286289
def test_reduce_boolean_removes_nothing(self, fake_vs):
287290
fake_vs.create(partition='Common', name='test_create', enabled=True)
288291
session = fake_vs._meta_data['bigip']._meta_data['icr_session']
289292
pos, kwargs = session.post.call_args
290-
assert kwargs['json']['enabled'] is True
291-
assert 'disabled' not in kwargs['json']
293+
if sys.version_info.major == 2:
294+
assert '"enabled": true' in kwargs['data']
295+
assert 'disabled' not in kwargs['data']
292296

293297
def test_reduce_boolean_same_value(self, fake_vs):
294298
with pytest.raises(ExclusiveAttributesPresent) as ex:
@@ -423,8 +427,9 @@ def test_Collection_removal(self):
423427
assert 'contained' in r.__dict__
424428
r.update(a="b")
425429
submitted = r._meta_data['bigip']. \
426-
_meta_data['icr_session'].put.call_args[1]['json']
427-
assert 'contained' not in submitted
430+
_meta_data['icr_session'].put.call_args[1]['data']
431+
if sys.version_info.major == 2:
432+
assert 'contained' not in submitted
428433

429434
def test_read_only_removal(self):
430435
r = Resource(mock.MagicMock())
@@ -440,29 +445,33 @@ def test_read_only_removal(self):
440445
assert 'READONLY' in r.__dict__
441446
r.update(a="b")
442447
submitted = r._meta_data['bigip'].\
443-
_meta_data['icr_session'].put.call_args[1]['json']
444-
assert 'READONLY' not in submitted
448+
_meta_data['icr_session'].put.call_args[1]['data']
449+
if sys.version_info.major == 2:
450+
assert 'READONLY' not in submitted
445451

446452
def test_reduce_boolean_removes_enabled(self, fake_rsrc):
447453
fake_rsrc.update(enabled=False)
448454
pos, kwargs = fake_rsrc._meta_data['bigip'].\
449455
_meta_data['icr_session'].put.call_args
450-
assert kwargs['json']['disabled'] is True
451-
assert 'enabled' not in kwargs['json']
456+
if sys.version_info.major == 2:
457+
assert '"disabled": true' in kwargs['data']
458+
assert 'enabled' not in kwargs['data']
452459

453460
def test_reduce_boolean_removes_disabled(self, fake_rsrc):
454461
fake_rsrc.update(disabled=False)
455462
pos, kwargs = fake_rsrc._meta_data['bigip'].\
456463
_meta_data['icr_session'].put.call_args
457-
assert kwargs['json']['enabled'] is True
458-
assert 'disabled' not in kwargs['json']
464+
if sys.version_info.major == 2:
465+
assert '"enabled": true' in kwargs['data']
466+
assert 'disabled' not in kwargs['data']
459467

460468
def test_reduce_boolean_removes_nothing(self, fake_rsrc):
461469
fake_rsrc.update(partition='Common', name='test_create', enabled=True)
462470
pos, kwargs = fake_rsrc._meta_data['bigip'].\
463471
_meta_data['icr_session'].put.call_args
464-
assert kwargs['json']['enabled'] is True
465-
assert 'disabled' not in kwargs['json']
472+
if sys.version_info.major == 2:
473+
assert '"enabled": true' in kwargs['data']
474+
assert 'disabled' not in kwargs['data']
466475

467476
def test_reduce_boolean_same_value(self, fake_rsrc):
468477
with pytest.raises(BooleansToReduceHaveSameValue) as ex:
@@ -506,9 +515,10 @@ def test_Collection_removal(self):
506515
assert 'contained' in r.__dict__
507516
r.modify(a="b")
508517
submitted = r._meta_data['bigip']. \
509-
_meta_data['icr_session'].patch.call_args[1]['json']
518+
_meta_data['icr_session'].patch.call_args[1]['data']
510519

511-
assert 'contained' not in submitted
520+
if sys.version_info.major == 2:
521+
assert 'contained' not in submitted
512522

513523
def test_read_only_validate(self):
514524
r = Resource(mock.MagicMock())
@@ -528,22 +538,25 @@ def test_reduce_boolean_removes_enabled(self, fake_rsrc):
528538
fake_rsrc.modify(enabled=False)
529539
pos, kwargs = fake_rsrc._meta_data['bigip'].\
530540
_meta_data['icr_session'].patch.call_args
531-
assert kwargs['json']['disabled'] is True
532-
assert 'enabled' not in kwargs['json']
541+
if sys.version_info.major == 2:
542+
assert '"disabled": true' in kwargs['data']
543+
assert 'enabled' not in kwargs['data']
533544

534545
def test_reduce_boolean_removes_disabled(self, fake_rsrc):
535546
fake_rsrc.modify(disabled=False)
536547
pos, kwargs = fake_rsrc._meta_data['bigip'].\
537548
_meta_data['icr_session'].patch.call_args
538-
assert kwargs['json']['enabled'] is True
539-
assert 'disabled' not in kwargs['json']
549+
if sys.version_info.major == 2:
550+
assert '"enabled": true' in kwargs['data']
551+
assert 'disabled' not in kwargs['data']
540552

541553
def test_reduce_boolean_removes_nothing(self, fake_rsrc):
542554
fake_rsrc.modify(partition='Common', name='test_create', enabled=True)
543555
pos, kwargs = fake_rsrc._meta_data['bigip'].\
544556
_meta_data['icr_session'].patch.call_args
545-
assert kwargs['json']['enabled'] is True
546-
assert 'disabled' not in kwargs['json']
557+
if sys.version_info.major == 2:
558+
assert '"enabled": true' in kwargs['data']
559+
assert 'disabled' not in kwargs['data']
547560

548561
def test_reduce_boolean_same_value(self, fake_rsrc):
549562
with pytest.raises(BooleansToReduceHaveSameValue) as ex:

0 commit comments

Comments
 (0)