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