Forum Discussion
iApp works in production, but fails sys load verify.
- Jul 25, 2016
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- 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_128388Jul 25, 2016Nimbostratus
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_128388Jul 25, 2016Nimbostratus
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_856Jul 25, 2016Historic 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
- Archie_128388Jul 25, 2016Nimbostratus
Well thats embarrassing... I checked my code again and right at the end was this:
tmsh::modify $::DUMMY$::GRESourceLoopback__diocese-$::GRESourceLoopback__orgid}}}
I had not escaped those last three braces, now it compiles.
Thanks Fred!
- Fred_Slater_856Jul 26, 2016Historic F5 Account
Happy to help. Good luck.
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