dynamic devices

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

29
app.py
View File

@ -55,17 +55,25 @@ class UnifiAPI:
} }
self.site_id = "default" 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" url = f"{self.base_url}/proxy/network/v2/api/site/{self.site_id}/device"
response = self.session.get(url, headers=self.headers) response = self.session.get(url, headers=self.headers)
response.raise_for_status() 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): def get_device_details(self, device_id):
url = f"{self.base_url}/proxy/network/v2/api/site/{self.site_id}/device/{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 = self.session.get(url, headers=self.headers)
response.raise_for_status() response.raise_for_status()
return response.json() # Return the full response return response.json()
def get_device_diagnostics(self, device): def get_device_diagnostics(self, device):
details = self.get_device_details(device['device_id']) details = self.get_device_details(device['device_id'])
@ -107,15 +115,22 @@ class UnifiAPI:
} }
return result return result
def run_diagnostics(device): def run_diagnostics(device):
try: try:
config = load_config() config = load_config()
unifi = UnifiAPI(config) unifi = UnifiAPI(config)
diagnostics = unifi.get_device_diagnostics(device) 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}") logger.debug(f"Got diagnostics for {device['name']}: {diagnostics}")
return diagnostics return diagnostics
except Exception as e: except Exception as e:
logger.error(f"Error getting diagnostics for {device['name']}: {str(e)}")
return {"error": str(e)} return {"error": str(e)}
def update_status(): def update_status():
@ -136,9 +151,7 @@ def update_status():
@app.route('/') @app.route('/')
def home(): def home():
config = load_config() config = load_config()
logger.debug(f"Loaded devices: {config['devices']}")
devices = config['devices'] devices = config['devices']
logger.debug(f"Rendering template with devices: {devices}")
return render_template('index.html', devices=devices) return render_template('index.html', devices=devices)
@app.route('/api/status') @app.route('/api/status')
@ -150,16 +163,12 @@ def get_diagnostics():
try: try:
config = load_config() config = load_config()
unifi = UnifiAPI(config) unifi = UnifiAPI(config)
logger.debug("Getting all devices...")
devices = unifi.get_all_devices() devices = unifi.get_all_devices()
logger.debug(f"Raw devices response: {devices}")
diagnostics = {} diagnostics = {}
for device in config['devices']: for device in config['devices']:
if device.get('device_id'): if device.get('device_id'):
logger.debug(f"Getting diagnostics for {device['name']}")
device_details = unifi.get_device_details(device['device_id']) device_details = unifi.get_device_details(device['device_id'])
logger.debug(f"Raw device details: {device_details}")
diagnostics[device['name']] = device_details diagnostics[device['name']] = device_details
return jsonify(diagnostics) return jsonify(diagnostics)