Forum Discussion
Proc 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, Rene
- nitass_89166Noctilucent
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.
mine is always wrong (i.e. rule2 calls proc of rule1). i think you may open a support case to verify if it is expected behavior or bug.
- Rene_C_NimbostratusThanks for the time to test; Its a different story if one library version is in /Common - Partition, since this is more or less a default for calls without partition. Though its still undeterministic. I guess i will open a support case then and post the results here once we got a solutions. Cheers, Rene
- nitassEmployee
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.
mine is always wrong (i.e. rule2 calls proc of rule1). i think you may open a support case to verify if it is expected behavior or bug.
- Rene_C_NimbostratusThanks for the time to test; Its a different story if one library version is in /Common - Partition, since this is more or less a default for calls without partition. Though its still undeterministic. I guess i will open a support case then and post the results here once we got a solutions. Cheers, Rene
- nitassEmployee
this is my testing.
version root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) show sys version|grep -A 6 Package Main Package Product BIG-IP Version 11.5.1 Build 0.0.110 Edition Final Date Wed Mar 12 15:44:53 PDT 2014 config root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm virtual /p1/v1 ltm virtual /p1/v1 { destination /p1/172.28.24.201:80 ip-protocol tcp mask 255.255.255.255 partition p1 profiles { http { } tcp { } } rules { /p1/r1 } source 0.0.0.0/0 vs-index 42 } root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm rule /p1/r1 ltm rule /p1/r1 { partition p1 proc pcure {} { log local0. "p1" } when HTTP_REQUEST { call pcure HTTP::respond 200 } } root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm virtual /p2/v2 ltm virtual /p2/v2 { destination /p2/172.28.24.202:80 ip-protocol tcp mask 255.255.255.255 partition p2 profiles { http { } tcp { } } rules { /p2/r2 } source 0.0.0.0/0 vs-index 43 } root@(ve11a)(cfg-sync In Sync)(Active)(/Common)(tmos) list ltm rule /p2/r2 ltm rule /p2/r2 { partition p2 proc pcure {} { log local0. "p2" } when HTTP_REQUEST { call pcure HTTP::respond 200 } } test (10 requests to /p1/v1 and another 10 requests to /p2/v2) [root@ve11a:Active:In Sync] config tail -f /var/log/ltm Jun 4 03:00:14 ve11a info tmm[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm1[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm1[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm1[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm1[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:14 ve11a info tmm1[9801]: Rule /p1/r1 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm1[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm1[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm1[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm1[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm[9801]: Rule /p2/r2 HTTP_REQUEST: p1 Jun 4 03:00:17 ve11a info tmm1[9801]: Rule /p2/r2 HTTP_REQUEST: p1
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