proc call
3 Topics11.6.0 HF5 Error 010716bc:3: anybody ?
I recently upgraded one of my AWS F5, from 11.6.0.4 to 11.6.0.5 I use some complex iRules to manage my sites, including recently added procs Now every change I try on the virtual server using the irules, I always get the error: 010716bc:3: HTTP::header command in a proc in rule (/Common/GTM) under HTTP_REQUEST event at virtual server (/Common/STAGE_MYSERVER_80) does not satisfy cmd/event/profile requirement. I know I've not provided much details, but I don't want a validation of my irule: just want to confirm if a change breaking existing code can be expected in a HotFix? Or there simply was a problem with my upgrade. Does anybody know if the irule runtime environment has changed in HotFix5 ??? Where can I find info about that error code? Thank you Angelo.446Views0likes6CommentsIs there any known impacts of HSL with PROC support ?
Hi All, We are using HSL for remote logging but when all the HSL servers are down we are doing local logging. Below is the existing iRule when RULE_INIT { upvar 0 tcl_platform static::tcl_platform set static::log_publisher "/Common/HSLPublisher" log local0.info "iRule Initialization" set static::logging 0 set static::hsllogging 1 set static::rule_name "testRule1" set static::hsl_pool "pool_hsl_logging" } when CLIENT_ACCEPTED { set CLIENT_ACCEPTED_DEBUG "$static::tcl_platform(machine) debug tmm[TMM::cmp_unit]: Rule $static::rule_name CLIENT_ACCEPTED:" set CLIENT_ACCEPTED_INFO "$static::tcl_platform(machine) info tmm[TMM::cmp_unit]: Rule $static::rule_name CLIENT_ACCEPTED:" set hsl [HSL::open -publisher $static::log_publisher] if { $static::logging == 1 } { if { $static::hsllogging } { if {[active_members $static::hsl_pool] < 1} { log local0.debug "CALL_FLOW Client \[[IP::client_addr]:[TCP::client_port]\]==>F5 \[[IP::local_addr]_[TCP::local_port]\]" } else { HSL::send $hsl "$CLIENT_ACCEPTED_DEBUG CALL_FLOW Client \[[IP::client_addr]:[TCP::client_port]\]==>F5 \[[IP::local_addr]_[TCP::local_port]\]" } } else { log local0.debug "CALL_FLOW Client \[[IP::client_addr]:[TCP::client_port]\]==>F5 \[[IP::local_addr]_[TCP::local_port]\]" } } } when CLIENT_CLOSED { set CLIENT_CLOSED_DEBUG "$static::tcl_platform(machine) debug tmm[TMM::cmp_unit]: Rule $static::rule_name CLIENT_CLOSED:" if { $static::logging == 1 } { if { $static::hsllogging } { if {[active_members $static::hsl_pool] < 1} { log local0.debug "CALL_FLOW CLient \[[IP::client_addr]:[TCP::client_port]\]==>F5 \[[IP::local_addr]_[TCP::local_port]\]" } else { HSL::send $hsl "$CLIENT_CLOSED_DEBUG CALL_FLOW CLient \[[IP::client_addr]:[TCP::client_port]\]==>F5 \[[IP::local_addr]_[TCP::local_port]\]" } } else { log local0.debug "CALL_FLOW CLient \[[IP::client_addr]:[TCP::client_port]\]==>F5 \[[IP::local_addr]_[TCP::local_port]\]" } } } For every one line of log we have to write 12 lines of code instead we are planning to use PROC. Is there any known impact of PROC with HSL. We will have a separate PROC for each iRule below is the snippet proc test_hsl { log_str hsl_log_str hsl_enable hsl_handler} { if { ([active_members $static::hsl_pool] > 0) && ($hsl_enable) } { HSL::send $hsl_handler $hsl_log_str } else { log local0.info "$log_str" } } when RULE_INIT { upvar 0 tcl_platform static::tcl_platform set static::log_publisher "/Common/HSLPublisher" log local0.info "iRule Initialization" set static::logging 0 set static::hsllogging 1 set static::rule_name "testRule1" set static::hsl_pool "pool_hsl_logging" } when CLIENT_ACCEPTED { set CLIENT_ACCEPTED_DEBUG "$static::tcl_platform(machine) debug tmm[TMM::cmp_unit]: Rule $static::rule_name CLIENT_ACCEPTED:" set CLIENT_ACCEPTED_INFO "$static::tcl_platform(machine) info tmm[TMM::cmp_unit]: Rule $static::rule_name CLIENT_ACCEPTED:" set hsl [HSL::open -publisher $static::log_publisher] if { $static::logging == 1 } { call test_hsl "$logStr" "$CLIENT_ACCEPTED_INFO $logStr" $static::hsllogging $hsl } } when CLIENT_CLOSED { set CLIENT_CLOSED_DEBUG "$static::tcl_platform(machine) debug tmm[TMM::cmp_unit]: Rule $static::rule_name CLIENT_CLOSED:" if { $static::logging == 1 } { call test_hsl "$logStr" "$CLIENT_CLOSED_INFO $logStr" $static::hsllogging $hsl } }277Views0likes2CommentsProc Calls in different partitions
Hi, in our Environment we got our Development and Quality/Staging Environment on one F5 BigIP, but on different partitions. As we rely on iRules for our SSO-integration this leads to a strange problem when using proc calls. Lets say i got a Library - iRule called UTILS. This Library of proc-functions may be different for Development and Quality Environment, since we want to stage development for iRules too over the environments. So i got /Dev/UTILS and /Qual/UTILS Now i have 2 virtuals, one in each environment, with one iRule assigned where i just call a single proc of the library: call UTILS::log_test When used without a partition, according to documentation, the call statement should look into the current partition for the Rule Namespace. When opening the Dev-Virtual in the browser, i see my log-statement from Dev-Library in LTM-Log -> so far fine. When opening the Qual-Virtual, i see my log-statement from Dev-Library in LTM-Log -> not ok It seems completely undeterministic on which Library actually gets called, sometimes it's the first one that was initiated, sometimes it just works correctly, and sometimes it seems like round-robin. Any idea what i could do to get the desired behaviour? Please note that i cant just call the Library with the partition included, since we got around 30 iRules, and if one integration is tested we want to just copy it over to the next stage, without the need to change every single call for the library. I know it would work with using something like eval "call $partition/UTILS::log_test", though adding evals for each single library call is a bit cumbersome and produces much boilerplate code, especially when cascading library calls. Thanks for your help, Rene287Views0likes5Comments