From b67a5d10c290915b762431727476be518576cf79 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Sat, 8 Feb 2025 00:03:01 -0500 Subject: [PATCH] dynamic devices --- app.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/app.py b/app.py index a0098f5..6bdca42 100644 --- a/app.py +++ b/app.py @@ -54,18 +54,26 @@ class UnifiAPI: 'Accept': 'application/json' } self.site_id = "default" - - def get_all_devices(self): + + def get_devices(self): url = f"{self.base_url}/proxy/network/v2/api/site/{self.site_id}/device" response = self.session.get(url, headers=self.headers) response.raise_for_status() - return response.json() # Return the full response + devices = response.json() + return [{ + 'name': device['name'], + 'ip': device['ip'], + 'type': device['type'], + 'connection_type': 'fiber' if device.get('uplink', {}).get('media') == 'sfp' else 'copper', + 'critical': True if device['type'] in ['udm-pro', 'switch'] else False, + 'device_id': device['mac'] + } for device in devices] def get_device_details(self, device_id): url = f"{self.base_url}/proxy/network/v2/api/site/{self.site_id}/device/{device_id}" response = self.session.get(url, headers=self.headers) response.raise_for_status() - return response.json() # Return the full response + return response.json() def get_device_diagnostics(self, device): details = self.get_device_details(device['device_id']) @@ -107,15 +115,22 @@ class UnifiAPI: } return result + def run_diagnostics(device): try: config = load_config() unifi = UnifiAPI(config) diagnostics = unifi.get_device_diagnostics(device) + +@app.route('/') +def home(): + config = load_config() + unifi = UnifiAPI(config) + devices = unifi.get_devices() + return render_template('index.html', devices=devices) logger.debug(f"Got diagnostics for {device['name']}: {diagnostics}") return diagnostics except Exception as e: - logger.error(f"Error getting diagnostics for {device['name']}: {str(e)}") return {"error": str(e)} def update_status(): @@ -136,9 +151,7 @@ def update_status(): @app.route('/') def home(): config = load_config() - logger.debug(f"Loaded devices: {config['devices']}") devices = config['devices'] - logger.debug(f"Rendering template with devices: {devices}") return render_template('index.html', devices=devices) @app.route('/api/status') @@ -150,16 +163,12 @@ def get_diagnostics(): try: config = load_config() unifi = UnifiAPI(config) - logger.debug("Getting all devices...") devices = unifi.get_all_devices() - logger.debug(f"Raw devices response: {devices}") diagnostics = {} for device in config['devices']: if device.get('device_id'): - logger.debug(f"Getting diagnostics for {device['name']}") device_details = unifi.get_device_details(device['device_id']) - logger.debug(f"Raw device details: {device_details}") diagnostics[device['name']] = device_details return jsonify(diagnostics)