Skip to content

Commit 139d0d0

Browse files
author
Paul Breaux
committed
Fix broken backwards compat in regards to tmos_version
Issues: Fixes #638 Problem: The tmos_version attribute was changed from being a property to being a key in the _meta_data dictionary on the bigip container. This change broken backwards compat without use realizing immediately, and we need to support both methods until we're ready to bump the release to 2.0.0. Analysis: Added the @Property back to the f5/bigip/__init__.py for tmos_version. Both ways of accessing tmos_version are now supported Tests: Added a test to ensure we can access the tmos_version both ways
1 parent e2a4c1d commit 139d0d0

8 files changed

Lines changed: 19 additions & 5 deletions

File tree

f5/bigip/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ def hostname(self):
7171
def icontrol_version(self):
7272
return self._meta_data['icontrol_version']
7373

74+
@property
75+
def tmos_version(self):
76+
return self._meta_data['tmos_version']
77+
7478
def _get_tmos_version(self):
7579
connect = self._meta_data['bigip']._meta_data['icr_session']
7680
base_uri = self._meta_data['uri'] + 'tm/sys/'

f5/bigip/mixins.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def __getattr__(container, name):
114114
return attribute
115115

116116
def _check_supported_versions(self, container, attribute):
117-
tmos_v = container._meta_data['bigip']._meta_data['tmos_version']
117+
tmos_v = container._meta_data['bigip'].tmos_version
118118
minimum = attribute._meta_data['minimum_version']
119119
if LooseVersion(tmos_v) < LooseVersion(minimum):
120120
error = "There was an attempt to access resource: \n{}\n which " \

f5/bigip/test/test_resource.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,6 +797,8 @@ def test_load(self):
797797
})
798798
]}
799799
mock_session = mock.MagicMock(**attrs)
800+
ver_mock = mock.PropertyMock(return_value='11.5.0')
801+
type(r._meta_data['bigip']).tmos_version = ver_mock
800802
r._meta_data['bigip']._meta_data =\
801803
{'icr_session': mock_session,
802804
'hostname': 'TESTDOMAINNAME',

f5/bigip/tm/sys/test/test_db.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
def fake_dbs():
2424
fake_sys = mock.MagicMock()
2525
dbs = Dbs(fake_sys)
26-
dbs._meta_data['bigip']._meta_data = {'tmos_version': '11.6.0'}
26+
dbs._meta_data['bigip'].tmos_version = '11.6.0'
2727
return dbs
2828

2929

f5/bigip/tm/sys/test/test_folder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
def FakeFolders():
2525
fake_sys = mock.MagicMock()
2626
folders = Folders(fake_sys)
27-
folders._meta_data['bigip']._meta_data = {'tmos_version': '11.6.0'}
27+
folders._meta_data['bigip'].tmos_version = '11.6.0'
2828
return folders
2929

3030

f5/bigip/tm/sys/test/test_performance.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
def FakePerformance():
2626
fake_sys = mock.MagicMock()
2727
performances = Performances(fake_sys)
28-
performances._meta_data['bigip']._meta_data = {'tmos_version': '11.6.0'}
28+
performances._meta_data['bigip'].tmos_version = '11.6.0'
2929
return performances
3030

3131

requirements.test.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ mock==1.3.0
88
pytest==2.9.1
99
pytest-cov>=2.2.1
1010
git+https://github.com/F5Networks/pytest-symbols.git
11-
python-coveralls
11+
python-coveralls
12+
pyopenssl

test/functional/test/test__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,10 @@ def test_invalid_args(opt_bigip, opt_username, opt_password, opt_port):
2727
def test_icontrol_version(opt_bigip, opt_username, opt_password, opt_port):
2828
m = ManagementRoot(opt_bigip, opt_username, opt_password, port=opt_port)
2929
assert hasattr(m, 'icontrol_version')
30+
31+
32+
def test_tmos_version(mgmt_root):
33+
assert mgmt_root.tmos_version == \
34+
mgmt_root._meta_data['bigip']._meta_data['tmos_version']
35+
assert mgmt_root.tmos_version is not None
36+
assert mgmt_root._meta_data['bigip']._meta_data['tmos_version'] != ''

0 commit comments

Comments
 (0)