Get All Pool Member Status Using LTM, Python, and bigsuds

Problem this snippet solves:

I spent a bit of time trying to get this to work. Delivering the data in the correct format to the get_member_session_status method took me a while, so I thought I would post my solution.

Code :

#!/usr/bin/env python
import sys
import bigsuds

def get_pools(obj):
    try:
        return obj.LocalLB.Pool.get_list()
    except Exception, e:
        print e
def get_members(obj, pool):
    try:
        return pool, obj.LocalLB.Pool.get_member_v2(pool)
    except Exception, e:
        print e
def get_status(obj, pool):
    try:
        return obj.LocalLB.Pool.get_member_session_status(pool)
    except Exception, e:
        print e
try:
    b = bigsuds.BIGIP(
            hostname = “”,
            username = "admin",
            password = “admin”,
            )
except Exception, e:
    print e
pools = get_pools(b)
members = get_members(b, pools)
for pool in pools:
    print "Pool:  %s" % pool
    members = b.LocalLB.Pool.get_member_v2([pool])
    status = b.LocalLB.Pool.get_member_session_status([pool], members)
    print "\tMembers:"
    for members, status in zip(members, status):
        count = 0
        while count < len(members):
            print "\t\tHost: %s\tState: %s" % (members[count]["address"], status[count])
            count += 1

Tested this on version:

11.6
Published Aug 19, 2015
Version 1.0
  • How hard would it be to make this a webpage? I am happy I can see this information but, when you have a hundred pools and hundreds of nodes it just scrolls through the screen. I have just started working with psp but, it doesn't seem that this easily translates to that type.
  • Note that this will only show the admin status of each member. To get the healthcheck status, use: b.LocalLB.Pool.get_member_monitor_status([pool], members)