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
yamashin55
Cirrus
Apr 29, 2023Please tell me if you know. how did you visualize the json data? (Image in comment section)
How to visualize and output json data to pdf using python graphviz?
- SkylerJan 16, 2025
Altocumulus
from 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.
- yamashin55Jan 16, 2025
Cirrus
Hi Skyler,
Thank you for your help!!