Add server links management and timeout guard for VM/container discovery
All checks were successful
Build-Publish / build (linux/amd64) (push) Successful in 5s
Build-Publish / build (linux/arm64) (push) Successful in 13s
Build-Publish / create-manifest (push) Successful in 2s
Build-Publish / publish-template (push) Successful in 15s

This commit is contained in:
j
2026-03-08 20:26:07 +13:00
parent 7d7cd25518
commit d9d7662d8c
4 changed files with 200 additions and 6 deletions

View File

@@ -42,6 +42,7 @@ class Server(db.Model):
last_collected = db.Column(db.DateTime, nullable=True)
details = db.Column(db.JSON, nullable=True)
notes = db.Column(db.Text, default='')
links = db.Column(db.JSON, default=list) # [{"label": "...", "url": "..."}]
parent_hostname = db.Column(db.String(255), default='')
__table_args__ = (db.UniqueConstraint('username', 'hostname', name='uq_user_host'),)
@@ -319,6 +320,11 @@ def index():
return render_template('index.html', groups=groups, children_map=children_map, build_date=BUILD_DATE)
@app.route('/api/version')
def api_version():
return jsonify({'build_date': BUILD_DATE})
@app.route('/api/servers')
def api_servers():
servers = Server.query.all()
@@ -334,6 +340,7 @@ def api_servers():
'is_online': s.is_online,
'last_collected': s.last_collected.isoformat() if s.last_collected else None,
'notes': s.notes,
'links': s.links or [],
'parent_hostname': s.parent_hostname,
'details': s.details,
})
@@ -497,6 +504,16 @@ def api_update_notes(server_id):
return jsonify({'ok': True})
@app.route('/api/servers/<int:server_id>/links', methods=['PUT'])
def api_update_links(server_id):
from flask import request
server = Server.query.get_or_404(server_id)
data = request.get_json()
server.links = data.get('links', [])
db.session.commit()
return jsonify({'ok': True})
def _ip_sort_key(ip_str):
if not ip_str:
return [999, 999, 999, 999]
@@ -646,6 +663,7 @@ def migrate_db():
'url': "ALTER TABLE servers ADD COLUMN url VARCHAR(1024) DEFAULT ''",
'notes': "ALTER TABLE servers ADD COLUMN notes TEXT DEFAULT ''",
'parent_hostname': "ALTER TABLE servers ADD COLUMN parent_hostname VARCHAR(255) DEFAULT ''",
'links': "ALTER TABLE servers ADD COLUMN links JSON DEFAULT '[]'",
}
for col, sql in migrations.items():
if col not in existing: