05-May-2020 07:58
I have a very small/simple fastl4 profile based on the default. I want to disable syn-cookie-enable, which is pretty easy from the CLI:
modify ltm profile cookie-all-fastl4 syn-cookie-enable disable
This results in the following:
ltm profile fastl4 cookie-all-fastl4 {
app-service none
defaults-from fastL4
syn-cookie-enable disabled
}
I have not had much success trying to do the same with the Python SDK.
If I use the load/update method it will create an entirely custom configuration.
cookie = bigip.tm.ltm.profile.fastl4s.fastl4.load(name='cookie-tcp-fastl4')
cookie.synCookieEnable='disabled'
cookie.update()
The result is this:
ltm profile fastl4 cookie-tcp-fastl4 {
app-service none
client-timeout 30
defaults-from fastL4
description none
explicit-flow-migration disabled
hardware-syn-cookie disabled
idle-timeout 300
ip-df-mode preserve
ip-tos-to-client pass-through
ip-tos-to-server pass-through
ip-ttl-mode decrement
ip-ttl-v4 255
ip-ttl-v6 64
keep-alive-interval disabled
late-binding disabled
link-qos-to-client pass-through
link-qos-to-server pass-through
loose-close disabled
loose-initialization disabled
mss-override 0
other-pva-clientpkts-threshold 2
other-pva-offload-direction bidirectional
other-pva-serverpkts-threshold 1
other-pva-whento-offload after-packets-per-direction
priority-to-client pass-through
priority-to-server pass-through
pva-acceleration full
pva-dynamic-client-packets 1
pva-dynamic-server-packets 0
pva-flow-aging enabled
pva-flow-evict enabled
pva-offload-dynamic enabled
pva-offload-dynamic-priority disabled
pva-offload-initial-priority medium
pva-offload-state embryonic
reassemble-fragments disabled
receive-window-size 0
reset-on-timeout enabled
rtt-from-client disabled
rtt-from-server disabled
server-sack disabled
server-timestamp disabled
software-syn-cookie disabled
syn-cookie-enable disabled
syn-cookie-mss 0
syn-cookie-whitelist disabled
tcp-close-timeout 5
tcp-generate-isn disabled
tcp-handshake-timeout 5
tcp-pva-offload-direction bidirectional
tcp-pva-whento-offload embryonic
tcp-strip-sack disabled
tcp-time-wait-timeout 0
tcp-timestamp-mode preserve
tcp-wscale-mode preserve
timeout-recovery disconnect
}
This is undesirable because now I have to manage changes in both the default fastl4 profile and this cookie profile as well.
If I try to use the modify method I get an error:
cookie=bigip.tm.ltm.profile.fastl4s.fastl4.modify(name='cookie-tcp-fastl4', synCookieEnable='disabled')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/f5/bigip/resource.py", line 411, in modify
self._modify(**patch)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/f5/bigip/resource.py", line 392, in _modify
self._prepare_put_or_patch(patch)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/f5/bigip/resource.py", line 425, in _prepare_put_or_patch
update_uri = self._meta_data['uri']
KeyError: 'uri'
I'm not sure why the syntax is wrong, I use a very similar syntax for all sorts of other Resources.