dynamic devices

This commit is contained in:
2025-02-08 00:03:01 -05:00
parent 4c90fbb168
commit b67a5d10c2

31
app.py
View File

@ -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)