diff --git a/hyperglass/app.py b/hyperglass/app.py index 90f261f..1f10a6d 100644 --- a/hyperglass/app.py +++ b/hyperglass/app.py @@ -87,19 +87,6 @@ def testRoute(): return html -# Flask GET route to provides a JSON list of all networks/ASNs from the config file -@app.route("/networks", methods=["GET"]) -def get_networks(): - results = [] - results_dedup = set(results) - for r in routers_list: - if not r["asn"] in results_dedup: - results_dedup.add(r["asn"]) - results.append(dict(network=r["asn"])) - results_json = json.dumps(results, sort_keys=True) - return results_json - - # Flask GET route provides a JSON list of all routers for the selected network/ASN @app.route("/routers/", methods=["GET"]) def get_routers(asn): diff --git a/hyperglass/cmd_execute.py b/hyperglass/cmd_execute.py index 64794dc..374d06c 100644 --- a/hyperglass/cmd_execute.py +++ b/hyperglass/cmd_execute.py @@ -10,7 +10,7 @@ import vars import cmd_parser as parser log = logging.getLogger(__name__) -# Load TOML config file +# Load TOML devices file devices = toml.load(open("./config/devices.toml")) # Filter config to router list routers_list = devices["router"] diff --git a/hyperglass/static/js/hyperglass.js b/hyperglass/static/js/hyperglass.js index 8d553c7..f2dd694 100644 --- a/hyperglass/static/js/hyperglass.js +++ b/hyperglass/static/js/hyperglass.js @@ -4,7 +4,6 @@ var progress = ($('#progress')); var resultsbox = ($('#resultsbox')); resultsbox.hide(); progress.hide(); -listNetworks (); clientIP (); function clientIP () { @@ -13,19 +12,6 @@ function clientIP () { }); }; -function listNetworks () { - let networklist = $('#network'); - networklist.empty(); - networklist.prop('selectedIndex', 0); - const url = '/networks'; - $.getJSON(url, function (data) { - $.each(data, function (key, entry) { - networklist.append($('').attr('value', entry.network).text('AS'+entry.network)); - }) - }) -} - -// Update the list of routers for the *default* selected network $( document ).ready(function(){ var defaultasn = $ ( "#network" ).val(); $.ajax({ @@ -45,6 +31,7 @@ $( document ).ready(function(){ $('#network').on('change', () => { var asn = $("select[id=network").val() + $('#router').children(":not(#text_location)").remove(); $.ajax({ url: `/routers/${asn}`, type: 'get', diff --git a/hyperglass/templates.py b/hyperglass/templates.py index 5945c3b..c1001bd 100644 --- a/hyperglass/templates.py +++ b/hyperglass/templates.py @@ -29,7 +29,7 @@ class html: elif t == "test": template = env.get_template("templates/429.html") return template.render( - site_title=vars.brand.site_title(), + # General primary_asn=vars.gen.primary_asn(), google_analytics=vars.gen.google_analytics(), enable_recaptcha=vars.gen.enable_recaptcha(), @@ -38,6 +38,10 @@ class html: enable_bgp_aspath=vars.gen.enable_bgp_aspath(), enable_ping=vars.gen.enable_ping(), enable_traceroute=vars.gen.enable_traceroute(), + cache_timeout=vars.gen.cache_timeout(), + message_rate_limit_query=vars.gen.message_rate_limit_query(), + # Branding + site_title=vars.brand.site_title(), title=vars.brand.title(), subtitle=vars.brand.subtitle(), title_mode=vars.brand.title_mode(), @@ -60,10 +64,12 @@ class html: text_help_bgp_aspath=vars.brand.text_help_bgp_aspath(), text_help_ping=vars.brand.text_help_ping(), text_help_traceroute=vars.brand.text_help_traceroute(), - message_rate_limit_query=vars.gen.message_rate_limit_query(), text_limiter_title=vars.brand.text_limiter_title(), text_limiter_subtitle=vars.brand.text_limiter_subtitle(), - cache_timeout=vars.gen.cache_timeout(), + # Devices + device_networks=vars.dev.networks(), + # device_location=vars.dev.location(), + device_name=vars.dev.name(), ) diff --git a/hyperglass/templates/index.html b/hyperglass/templates/index.html index 96dd83f..daeac30 100644 --- a/hyperglass/templates/index.html +++ b/hyperglass/templates/index.html @@ -85,7 +85,9 @@
@@ -93,7 +95,7 @@
diff --git a/hyperglass/vars.py b/hyperglass/vars.py index 0f9f079..86fbe1d 100644 --- a/hyperglass/vars.py +++ b/hyperglass/vars.py @@ -7,11 +7,38 @@ config = toml.load(open("./config/config.toml")) # Filter config to branding variables branding = config["branding"] -# Filter config to generale variables +# Filter config to general variables general = config["general"] -# Functions to import config variables and return default values if undefined +# Load TOML devices file +devices = toml.load(open("./config/devices.toml")) +# Filter config to router list +routers_list = devices["router"] + + +class dev: + """Functions to import device variables""" + + def networks(): + asn_dict = dict() + for r in routers_list: + asn = r["asn"] + if asn in asn_dict: + asn_dict[asn].append(r["location"]) + else: + asn_dict[asn] = [r["location"]] + return asn_dict + + def name(): + list = [] + for r in routers_list: + list.append(str(r["name"])) + return list + + class gen: + """Functions to import config variables and return default values if undefined""" + def primary_asn(): list = [] for g in general: @@ -144,6 +171,8 @@ class gen: class brand: + """Functions to import branding variables and return default values if undefined""" + def site_title(): list = [] for t in branding: