dynamic devices
This commit is contained in:
31
app.py
31
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)
|
||||
|
||||
Reference in New Issue
Block a user