Forum Discussion
iApp works in production, but fails sys load verify.
Hi Everyone,
I have an iApp that I wrote on our F5 (Viprion) and it's doing everything I wanted, without issue. I want to upgrade to 12.1 (currently on v12) and when I do a tmsh load sys config verify to be sure of a smooth upgrade the iApp fails to verify:
Syntax Error:(/config/bigip_script.conf at line: 27) "
set POOLNODE " unknown property
I've read a few articles that suggest I need to escape the } with a \ however if I do this, the issues simply moves and then iapp::template start becomes an unknown property.
I can't work out why the GUI editor thinks the code is fine, but it fails a verify on load? I wrote the iApp in TMSH V12.0
Offending line(s) below:
set POOLMONITOR " session user-enabled state user-up } } min-active-members 1 monitor tcp_80}"
set POOLNODE " wcf-tunnel-node-"
set LBRACE " { "
I tried to add more info, but the F5 submit complained about the length of my post... 😕
Archie- Tcl processes quoted strings, allowing for variable substitution. The Tcl validator is attempting to interpret the unpaired brace as a boundary character. A simplified reproduction of the error is this:
sys application template x { actions { definition { implementation { set x "{" } presentation { } } }
root@(big82)(cfg-sync Standalone)(ModuleNotLicensed:Active)(/Common)(tmos) load sys config verify... Syntax Error:(/config/bigip_script.conf at line: 63644) incomplete command
Escaping should work. Did you escape all of the quoted braces? I tried building an iapp with all of the statements above, and could not get it to fail.
- Archie_128388Nimbostratus
I tried to add more info, but the F5 submit complained about the length of my post... :/
- Fred_Slater_856Historic F5 Account
Archie- Tcl processes quoted strings, allowing for variable substitution. The Tcl validator is attempting to interpret the unpaired brace as a boundary character. A simplified reproduction of the error is this:
sys application template x { actions { definition { implementation { set x "{" } presentation { } } }
root@(big82)(cfg-sync Standalone)(ModuleNotLicensed:Active)(/Common)(tmos) load sys config verify... Syntax Error:(/config/bigip_script.conf at line: 63644) incomplete command
Escaping should work. Did you escape all of the quoted braces? I tried building an iapp with all of the statements above, and could not get it to fail.
- Archie_128388Nimbostratus
Thanks Fred - I'm pretty sure I did escape them all out, but I'll go back over everything and re-check. Least I know I'm on the right track..
- Archie_128388Nimbostratus
Actually, I have a statement like this:
set DUMMY "/ltm data-group internal /Common/zscaler-wcf-source-to-tunnel-map { records add { 1.1.1.1/32 { data /Common/$tmsh::app_name.app/wcf-tunnel-pool-"
Should the / also be escaped with a \ or is it purely { or }
- Fred_Slater_856Historic F5 Account
No, that looks OK. To force a literal within quotes, escape { } because they represent Tcl lists, [ ] because they represent code to be executed and result substituted, and $ because it represents variable substitution. Within braces, you do not have to substitute [ ] or $. You can read more about all that at http://tmml.sourceforge.net/doc/tcl/Tcl.html
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com