Forum Discussion

BaltoStar_12467's avatar
Sep 09, 2014

BIG-IP : iRule class match fails to find data-group

F5 BIG-IP 11.4.1 Build 635.0 Hotfix HF2 LTM VE ESXi

Starting last night, for every request processed by my irule-01 I see this error :

Mon Sep 8 23:15:57 PDT 2014 err test-f5-01  tmm1[8721]  01220001    TCL error: /Common/irule-01  - Could not find class list_bots (line 2) invoked from within "class match -value [string tolower [HTTP::header User-Agent]] contains list_bots"

Here's the relevant line 2 :

set bot_generated [class match -value [string tolower [HTTP::header User-Agent]] contains list_bots]

But the

list_bots
external data-group ( type string ) is present and contains properly formatted name-value pairs and in fact it always has been present and has always processed correctly in the past.

Here is a sample line from list_bots :

"bingbot" := "bingbot",

I deleted list_bots external data-group and re-created it but still same issue.

What could be going on ? What could have changed ? What can I do ?

  • Its a long shot but can you try this, just in case a User Agent string starts with a

    -
    ;

    set bot_generated [class match -value -- [string tolower [HTTP::header User-Agent]] contains list_bots]
    

    Also, can you post an excerpt of the DG and let us know what TMOS version please?

  • John_Alam_45640's avatar
    John_Alam_45640
    Historic F5 Account

    If this is a list of Bots, the datagroup is not made up of name/value pairs. Then the "-value" is not appropriate.

    try this:

    set bot_generated [class match -- [string tolower [HTTP::header User-Agent]] equals list_bots]
    • BaltoStar_12467's avatar
      BaltoStar_12467
      Thanks for the response John. Actually list_bots is made up of name/value pairs, so the class match syntax is correct.. Please note that this always worked in the past - just recently BIG-IP began reporting that it could not find data-group list_bots
  • John_Alam_45640's avatar
    John_Alam_45640
    Historic F5 Account

    Interesting, but if it is a list, you should not need to specify a value.

     

    Is the datagroup external or internal, if external, can you re-Import it into the cache under iRules/data group List.

     

    HTH

     

    • BaltoStar_12467's avatar
      BaltoStar_12467
      I chose to use external data-group because it is less fragile ( via command-line I can work directly with the data-group file ). I've already tried deleting & re-creating to no avail.