Parcourir la source

script: Initial version of peering generation script (for ripe db)

Sebastien Badia il y a 9 ans
Parent
commit
038d57f7e3
1 fichiers modifiés avec 51 ajouts et 0 suppressions
  1. 51 0
      generate_config_ripe.py

+ 51 - 0
generate_config_ripe.py

@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import ipaddr
+import yaml
+import sys
+import os
+import glob
+from jinja2 import Environment, FileSystemLoader
+from termcolor import colored
+
+def parse_peers(peer_file):
+    """parse_peers: Just a simple function for peers parsing
+    :peer_file: The YAML peer file to parse
+    :returns: Just a return code if the file is correctly parsed or not
+
+    """
+
+    peering_flat = open(peer_file).read()
+    ixp = os.path.splitext(os.path.basename(peer_file))[0]
+
+    try:
+        peerings = yaml.safe_load(peering_flat)
+    except:
+        print colored('ERROR', 'red') + ": the peers.yaml file could not be parsed.. please check \
+    your syntax"
+        sys.exit(2)
+
+    print "remarks:\nremarks:    ======== %s ========\nremarks:" % ixp.upper()
+
+    for asn in peerings:
+        for keyword in ['export', 'import', 'description']:
+            if keyword not in peerings[asn]:
+                print colored('ERROR', 'red') + ": missing %s statement in stanza %s" % (keyword, asn)
+                sys.exit(2)
+
+        acceptable_exports = ['AS-GITOYEN', 'NOT ANY', 'ANY']
+        if not peerings[asn]['export'] in acceptable_exports:
+            print colored('ERROR', 'red') + ": export must be one of the following: %s" \
+                % " ".join(acceptable_exports)
+            sys.exit(2)
+
+        env = Environment(loader=FileSystemLoader('./'))
+        tpl = env.get_template('templates/ripe.j2')
+
+        print tpl.render(neighbor_as = asn, description =
+                peerings[asn]['description'], export_as = peerings[asn]['export'],
+                import_as = peerings[asn]['import'])
+
+for peer_files in glob.glob('peers/*.yml'):
+    parse_peers(peer_files)