GTM type A and AAAA wideip NetworkMap to generate a json with python f5-sdk
Code is community submitted, community supported, and recognized as ‘Use At Your Own Risk’. Short Description GTM type A and AAAA NetworkMap to a json with python f5-sdk, code support check AS3 wid...
Updated Dec 19, 2022
Version 4.0xuwen
Cumulonimbus
Joined September 03, 2020
Skyler
Altocumulus
Jan 16, 2025from graphviz import Digraph
import json
import time
def create_gtm_graph(gtm_data):
dot = Digraph(comment='GTM Configuration')
dot.attr(rankdir='TB')
dot.attr('node', shape='box', style='filled')
colors = {
'A': '#lightblue',
'AAAA': '#lightgreen',
'CNAME': '#lightyellow'
}
for wideip in gtm_data['wideips']:
wideip_name = wideip['name']
wideip_type = wideip['wideip_type']
wideip_node = f"{wideip_name}\n({wideip_type})"
dot.node(wideip_name, wideip_node, fillcolor=colors[wideip_type])
if 'pools' in wideip:
for pool in wideip['pools']:
pool_name = pool['name']
pool_node = f"{pool_name}\n{pool['loadBalancingMode']}"
dot.node(pool_name, pool_node, shape='ellipse',
fillcolor=colors[pool['type']])
dot.edge(wideip_name, pool_name,
label=f"order:{pool['order']}\nratio:{pool['ratio']}")
for member in pool['Members']:
member_name = f"{member['Member Address']}:{member['Service Port']}"
member_node = f"{member_name}\n{member['Member']}"
dot.node(member_name, member_node, shape='diamond',
fillcolor=colors[pool['type']])
dot.edge(pool_name, member_name,
label=f"order:{member['Member Order']}\nratio:{member['ratio']}")
if 'poolsCname' in wideip:
for cname_pool in wideip['poolsCname']:
cname_pool_name = cname_pool['name']
cname_node = f"{cname_pool_name}\n(CNAME)"
dot.node(cname_pool_name, cname_node, shape='ellipse',
fillcolor=colors['CNAME'])
dot.edge(wideip_name, cname_pool_name,
label=f"order:{cname_pool['order']}\nratio:{cname_pool['ratio']}")
return dot
with open(f"./F5-GTM-Wideip-{time.strftime('%Y-%m-%d')}-NetworkMap.json") as f:
gtm_data = json.load(f)
dot = create_gtm_graph(gtm_data)
dot.render(f"gtm_config_{time.strftime('%Y-%m-%d')}", view=True, format='pdf')
Hi Yamashin,
Here's the code I wrote to create a visual chart from the JSON data we made earlier. I hope it helps you! Feel free to use it.
yamashin55
Cirrus
Jan 16, 2025Hi Skyler,
Thank you for your help!!