File size: 1,972 Bytes
e3456a9
 
 
c152fec
e3456a9
 
c152fec
0831fe7
e3456a9
 
c152fec
e3456a9
 
 
 
 
0831fe7
e3456a9
c152fec
e3456a9
 
 
94f65ce
0831fe7
e3456a9
 
 
 
 
 
 
bde160e
 
 
e3456a9
0831fe7
 
bde160e
0831fe7
 
 
 
 
 
e3456a9
c152fec
e3456a9
 
c152fec
0831fe7
 
 
e3456a9
 
 
 
 
 
c152fec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
"""
Flare – Spark startup notifier
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Projeler açılırken Spark’a /startup çağrısı yapar.
"""

from __future__ import annotations
import threading, requests
from typing import Dict, Any
from utils import log
from config_provider import ConfigProvider, ProjectConfig, VersionConfig

cfg = ConfigProvider.get()


def _select_live_version(p: ProjectConfig) -> VersionConfig | None:
    """Yayınlanmış en güncel versiyonu getir."""
    published = [v for v in p.versions if v.published]
    return max(published, key=lambda v: v.id) if published else None


def notify_startup():
    spark_base = str(cfg.global_config.spark_endpoint).rstrip("/")

    for p in cfg.projects:
        if not p.enabled:
            continue
        v = _select_live_version(p)
        if not v:
            continue

        plain = cfg.global_config.get_plain_token()
        log(f"🔑 Cloud-token starts with {plain[:6]}… (len={len(plain)})")
        
        body: Dict[str, Any] = {
            # ----- zorunlu alanlar -----
            "work_mode": cfg.global_config.work_mode,
            "cloud_token": plain,
            "project_name": p.name,
            "project_version": v.id,
            "repo_id": v.llm.repo_id,
            "generation_config": v.llm.generation_config,
            "use_fine_tune": v.llm.use_fine_tune,
            "fine_tune_zip": v.llm.fine_tune_zip,
        }

        try:
            log(f"🚀 Notifying Spark /startup for project '{p.name}' …")
            r = requests.post(f"{spark_base}/startup", json=body, timeout=10)
            if r.status_code >= 400:
                log(f"❌ Spark responded {r.status_code}: {r.text}")
                r.raise_for_status()
            log(f"✅ Spark acknowledged startup ({r.status_code})")
        except Exception as e:
            log(f"⚠️ Spark startup failed: {e}")


def run_in_thread():
    threading.Thread(target=notify_startup, daemon=True).start()