Skip to content

Commit

Permalink
OPENSTACK-2894: use utf-8 code for bigip configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
zhang-shengping committed Oct 9, 2023
1 parent b4660d1 commit 1b8e9a6
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 27 deletions.
11 changes: 8 additions & 3 deletions f5/bigip/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
"orderreddict external dependency installed.")
raise exc(message)
import copy
import json
import keyword
import re
import time
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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):
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
61 changes: 37 additions & 24 deletions f5/bigip/test/unit/test_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import mock
import pytest
import requests
import sys

from f5.bigip.resource import _missing_required_parameters
from f5.bigip.resource import AsmResource
Expand Down Expand Up @@ -272,23 +273,26 @@ 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']
if sys.version_info.major == 2:
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']
if sys.version_info.major == 2:
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']
if sys.version_info.major == 2:
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:
Expand Down Expand Up @@ -423,8 +427,9 @@ 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']
assert 'contained' not in submitted
_meta_data['icr_session'].put.call_args[1]['data']
if sys.version_info.major == 2:
assert 'contained' not in submitted

def test_read_only_removal(self):
r = Resource(mock.MagicMock())
Expand All @@ -440,29 +445,33 @@ 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']
assert 'READONLY' not in submitted
_meta_data['icr_session'].put.call_args[1]['data']
if sys.version_info.major == 2:
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']
if sys.version_info.major == 2:
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']
if sys.version_info.major == 2:
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']
if sys.version_info.major == 2:
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:
Expand Down Expand Up @@ -506,9 +515,10 @@ 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
if sys.version_info.major == 2:
assert 'contained' not in submitted

def test_read_only_validate(self):
r = Resource(mock.MagicMock())
Expand All @@ -528,22 +538,25 @@ 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']
if sys.version_info.major == 2:
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']
if sys.version_info.major == 2:
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']
if sys.version_info.major == 2:
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:
Expand Down

0 comments on commit 1b8e9a6

Please sign in to comment.