ciyidogan commited on
Commit
3a6c280
Β·
verified Β·
1 Parent(s): 8b347b0

Update admin_routes.py

Browse files
Files changed (1) hide show
  1. admin_routes.py +49 -0
admin_routes.py CHANGED
@@ -224,6 +224,46 @@ def add_activity_log(config: dict, username: str, action: str,
224
  if len(config["activity_log"]) > 1000:
225
  config["activity_log"] = config["activity_log"][-1000:]
226
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  # ===================== Auth Endpoints =====================
228
  @router.post("/login", response_model=LoginResponse)
229
  async def login(request: LoginRequest):
@@ -725,6 +765,15 @@ async def publish_version(
725
  save_config(config)
726
 
727
  log(f"βœ… Version {version_id} published for project '{project['name']}' by {username}")
 
 
 
 
 
 
 
 
 
728
  return {"success": True}
729
 
730
  @router.delete("/projects/{project_id}/versions/{version_id}")
 
224
  if len(config["activity_log"]) > 1000:
225
  config["activity_log"] = config["activity_log"][-1000:]
226
 
227
+ async def notify_spark(project: dict, version: dict, global_config: dict):
228
+ """Notify Spark about published version"""
229
+ import httpx
230
+
231
+ spark_endpoint = global_config.get("spark_endpoint", "").rstrip("/")
232
+ if not spark_endpoint:
233
+ log("⚠️ Spark endpoint not configured")
234
+ return
235
+
236
+ work_mode = global_config.get("work_mode", "hfcloud")
237
+ cloud_token = global_config.get("cloud_token", "")
238
+
239
+ # Decrypt token if needed
240
+ if cloud_token and cloud_token.startswith("enc:"):
241
+ from encryption_utils import decrypt
242
+ cloud_token = decrypt(cloud_token)
243
+
244
+ payload = {
245
+ "work_mode": work_mode,
246
+ "cloud_token": cloud_token,
247
+ "project_name": project["name"],
248
+ "project_version": version["id"],
249
+ "repo_id": version["llm"]["repo_id"],
250
+ "generation_config": version["llm"]["generation_config"],
251
+ "use_fine_tune": version["llm"]["use_fine_tune"],
252
+ "fine_tune_zip": version["llm"]["fine_tune_zip"] if version["llm"]["use_fine_tune"] else None
253
+ }
254
+
255
+ log(f"πŸš€ Notifying Spark about {project['name']} v{version['id']}")
256
+
257
+ async with httpx.AsyncClient(timeout=30) as client:
258
+ try:
259
+ response = await client.post(spark_endpoint + "/startup", json=payload)
260
+ response.raise_for_status()
261
+ result = response.json()
262
+ log(f"βœ… Spark notification successful: {result.get('message', 'OK')}")
263
+ except Exception as e:
264
+ log(f"❌ Spark notification failed: {e}")
265
+ raise
266
+
267
  # ===================== Auth Endpoints =====================
268
  @router.post("/login", response_model=LoginResponse)
269
  async def login(request: LoginRequest):
 
765
  save_config(config)
766
 
767
  log(f"βœ… Version {version_id} published for project '{project['name']}' by {username}")
768
+
769
+ # Notify Spark if project is enabled
770
+ if project.get("enabled", False):
771
+ try:
772
+ await notify_spark(project, version, config.get("config", {}))
773
+ except Exception as e:
774
+ log(f"⚠️ Failed to notify Spark: {e}")
775
+ # Don't fail the publish
776
+
777
  return {"success": True}
778
 
779
  @router.delete("/projects/{project_id}/versions/{version_id}")