Forum Discussion

jasvinder_singh's avatar
jasvinder_singh
Icon for Nimbostratus rankNimbostratus
Aug 20, 2017
Solved

Need help on F5 automation to read the irules attached t all the virtual servers

HI team,   I am new tp F5 automation. I am working on script to check irules attached on all of my vips. output should be as below irules   vip_name irule1 irule2 vip1_name irule1 irule2  
  • Hannes_Rapp_162's avatar
    Aug 20, 2017

    This is tested with Python 3.4.3 and BigIP 12.1. Did not have 12.0 installation readily available, but it should work the same for you

    from f5.bigip import ManagementRoot
    
     Optional: omit unsecure certificate warnings from output
    import requests
    from requests.packages.urllib3.exceptions import InsecureRequestWarning
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    
    API_ROOT = ManagementRoot("bip-01", "admin", "admin")
    VSERVER_COLLECTION = API_ROOT.tm.ltm.virtuals.get_collection()
    
    for vserver in VSERVER_COLLECTION:
        print(vserver.name)
         Catch an error to avoid a VS with no iRules breaking the script prematurely
        try:
            irules = vserver.rules
        except AttributeError:
            print('- No iRules on this Virtual Server!')
        else:
            for rule in vserver.rules:
                print('-', rule)
    

    Output in test env:

    $ python list_irules.py
    
    vs_0.0.0.0_any
    - No iRules on this Virtual Server!
    vs_test_80
    - /Common/ir_do_nothing
    - /Common/ir_do_nothing_again
    vs_test_443
    - /Common/ir_do_nothing
    - /Common/ir_do_nothing_again
    

    As you can see from the script above, this takes a bit of testing to get the iRules listed. Ofcourse, ideally either the API or SDK should return an empty list if there are no iRules on a Virtual Server, rather than a script-breaking "AttributeError: 'f5.bigip.tm.ltm.virtual.Virtual'>' object has no attribute 'rules'". SDK is a build up on top of a problematic API, so eventually this problem should be addressed by the API developers.