Skip to content

Commit 2e7d5c7

Browse files
authored
Adds transforms for GTM virtual servers (#1419)
Issues: Fixes #1418 Problem: GTM virtual server names can include forward slashes. These were not being escaped properly Analysis: This patch adds the necessary transformations Tests:
1 parent c9bc31f commit 2e7d5c7

2 files changed

Lines changed: 36 additions & 4 deletions

File tree

f5/bigip/tm/gtm/server.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,22 @@ class Virtual_Server(Resource):
6969
"""BIG-IP® GTM virtual server resource"""
7070
def __init__(self, virtual_servers_s):
7171
super(Virtual_Server, self).__init__(virtual_servers_s)
72-
self._meta_data['required_creation_parameters'].update((
73-
'destination',))
72+
self._meta_data['required_creation_parameters'].update(('destination',))
7473
self._meta_data['required_json_kind'] = \
7574
'tm:gtm:server:virtual-servers:virtual-serversstate'
75+
76+
def load(self, **kwargs):
77+
kwargs['transform_name'] = True
78+
return self._load(**kwargs)
79+
80+
def exists(self, **kwargs):
81+
kwargs['transform_name'] = True
82+
return self._exists(**kwargs)
83+
84+
def refresh(self, **kwargs):
85+
kwargs['transform_name'] = True
86+
return self._refresh(**kwargs)
87+
88+
def delete(self, **kwargs):
89+
kwargs['transform_name'] = True
90+
return self._delete(**kwargs)

f5/bigip/tm/gtm/test/functional/test_server.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@
2626

2727
def delete_server(mgmt_root, name):
2828
try:
29-
foo = mgmt_root.tm.gtm.servers.server.load(
30-
name=name)
29+
foo = mgmt_root.tm.gtm.servers.server.load(name=name)
3130
except HTTPError as err:
3231
if err.response.status_code != 404:
3332
raise
@@ -271,6 +270,24 @@ def test_create_req_arg(self, request, mgmt_root):
271270
assert vs1.kind == 'tm:gtm:server:virtual-servers:virtual-serversstate'
272271
assert vs1.selfLink.startswith(link)
273272

273+
@pytest.mark.skipif(pytest.config.getoption('--release') < '12.0.0',
274+
reason='11.x was buggy. Only test 12.x')
275+
def test_create_req_arg_remote_like_name(self, request, mgmt_root):
276+
setup_create_vs_test(request, mgmt_root, 'fake_serv1')
277+
s1 = setup_basic_test(request, mgmt_root, 'fake_serv1', 'Common')
278+
vs = s1.virtual_servers_s
279+
vs1 = vs.virtual_server.create(name='/mouse/vs1', destination='5.5.5.5:80')
280+
link = 'https://localhost/mgmt/tm/gtm/server/~Common~fake_serv1/virtual-servers/~mouse~vs1'
281+
assert vs1.name == '/mouse/vs1'
282+
assert vs1.kind == 'tm:gtm:server:virtual-servers:virtual-serversstate'
283+
assert vs1.selfLink.startswith(link)
284+
285+
vs1.update(destination='5.5.5.5:8000')
286+
vs1.delete()
287+
288+
# Create so that pytest cleanup will succeed
289+
vs.virtual_server.create(name='/mouse/vs1', destination='5.5.5.5:80')
290+
274291
def test_create_optional_args(self, request, mgmt_root):
275292
setup_create_vs_test(request, mgmt_root, 'vs1')
276293
s1 = setup_basic_test(request, mgmt_root, 'fake_serv1', 'Common')

0 commit comments

Comments
 (0)