Skip to content

Instantly share code, notes, and snippets.

@clay584
Created March 2, 2015 14:10
Show Gist options
  • Select an option

  • Save clay584/0cc6f1adf855c3fad973 to your computer and use it in GitHub Desktop.

Select an option

Save clay584/0cc6f1adf855c3fad973 to your computer and use it in GitHub Desktop.
ip-subnet-to-json
#!/usr/bin/env python
import argparse
from netaddr import *
import pprint
class Tree(object):
def __init__(self):
self.left = None
self.right = None
self.data = None
def tree():
return defaultdict(tree)
def split_block(ip_block, prefix):
children = ip_block.subnet(prefix + 1)
return children
def main():
parser = argparse.ArgumentParser(description='CIDR JSON Generator - For use with D3.js Tree Graph')
parser.add_argument('--network', dest='parent_prefix', default='10.100.0.0/21', help='Parent CIDR block')
parser.add_argument('--max-prefix', type=int, dest='max_length', metavar='LENGTH', default=24, help='Maximum prefix length depth')
args = parser.parse_args()
parent = IPNetwork(args.parent_prefix)
parent_prefix = parent.prefixlen
max_length = args.max_length
tree = Tree()
tree.left = Tree()
tree.left = 'name'
tree.left.data = str(parent.cidr)
tree.right = Tree()
tree.right.data = 'children'
children = split_block(parent, parent_prefix)
child_list = []
for child in children:
child_list.append()
tree.right.data = child_list
pprint.pprint(tree)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment