For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Python BigRest VS and Pool status

Problem this snippet solves:

This gets the status of all Virtual servers and the pool members and write to a text file.

If one of the pool member is up, then the pool will be marked as up as well.

How to use this snippet:

Based on Python 3 and BigREST SDK

Code :

#Import needed libraries
from bigrest.bigip import BIGIP
import getpass

#Replace the host name as needed
host="xx.xx.xx.xx"
user=input('Username')
pw= getpass.getpass(prompt='Password:')

#Declare the Output filename
out="output.txt"

#Connect to device
device = BIGIP(host, user, pw)

#Open output file for writing
outf=open(out, 'w')


#Get the virtual server info
virtuals = device.load("/mgmt/tm/ltm/virtual")
for virtual in virtuals:

#Get the status of the VS
    vstat=device.load("/mgmt/tm/ltm/virtual/"+virtual.properties["fullPath"].replace("/","~")+"/stats")
    vss=list(vstat.properties['entries'].values())[0]['nestedStats']['entries']['status.availabilityState']['description']
    print("VS name is ", virtual.properties["fullPath"], vss)
    outf.write("VS name is " +  virtual.properties["fullPath"]+'\t'+vss+'\n')

#Get the pool name, if exists
    try:
        pool= virtual.properties["pool"]
    except:
        pool = None
        print ('Unassigned pool')
        outf.write("No pool assigned to this VS \n\n")
    if pool:

#Get the pool members info and their status
        pool= virtual.properties["pool"]
        pooldetail= device.load("/mgmt/tm/ltm/pool/"+pool.replace('/', '~')+"/members")
        pstate = 'Down'
        print ("Pool members are: ")
        outf.write("Pool members are: \n")
        for members in pooldetail:
            print (members.properties['fullPath'], members.properties['state'])
            outf.write(members.properties['fullPath']+'\t' +members.properties['state']+'\n')

#Mark the pool as up, if atleast one member is up
            if pstate=='Down':
                if members.properties['state'] == 'up':
                    pstate = 'up'
        print ("Pool is ", pool, pstate, '\n')
        outf.write("Pool is "+ pool + '\t' +pstate+'\n\n')
    outf.flush()
outf.close()

Tested this on version:

13.1
Published Jun 01, 2021
Version 1.0
No CommentsBe the first to comment