mirror of
https://github.com/hansjone/netx.git
synced 2026-10-09 09:30:45 +08:00
feat(UME): 增加RESTCONF对接与可视化运维页
- 支持 token 获取/续约/断开、DB共享缓存与跨进程单飞锁、keepalive 保活 - 新增 inventory/current/history 告警同步入库与查询接口,前端增加 UME 对接页面与分页 - 修复 stop_netx.ps1 在部分 PowerShell 版本下 Stop-Job -Force 报错 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
ab1b76dd47
commit
7f2e4ec393
15 changed files with 2577 additions and 15 deletions
|
|
@ -99,3 +99,111 @@ class AiAnalyzeHistory(Base):
|
|||
error: Mapped[str] = mapped_column(Text, default="")
|
||||
evidence_json: Mapped[str] = mapped_column(Text, default="{}")
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, index=True)
|
||||
|
||||
|
||||
class UmeSyncJob(Base):
|
||||
__tablename__ = "ume_sync_jobs"
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
||||
domain: Mapped[str] = mapped_column(String(32), index=True, default="inventory")
|
||||
status: Mapped[str] = mapped_column(String(32), index=True, default="running")
|
||||
trigger_mode: Mapped[str] = mapped_column(String(32), default="manual")
|
||||
started_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, index=True)
|
||||
ended_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
|
||||
pulled_count: Mapped[int] = mapped_column(Integer, default=0)
|
||||
inserted_count: Mapped[int] = mapped_column(Integer, default=0)
|
||||
updated_count: Mapped[int] = mapped_column(Integer, default=0)
|
||||
error_message: Mapped[str] = mapped_column(String(1024), default="")
|
||||
details_json: Mapped[str] = mapped_column(Text, default="{}")
|
||||
|
||||
|
||||
class UmeAlarmBatch(Base):
|
||||
__tablename__ = "ume_alarm_batches"
|
||||
|
||||
batch_id: Mapped[str] = mapped_column(String(64), primary_key=True, default=lambda: uuid4().hex)
|
||||
kind: Mapped[str] = mapped_column(String(16), index=True, default="current") # current/history
|
||||
status: Mapped[str] = mapped_column(String(32), default="done")
|
||||
total_rows: Mapped[int] = mapped_column(Integer, default=0)
|
||||
success_rows: Mapped[int] = mapped_column(Integer, default=0)
|
||||
failed_rows: Mapped[int] = mapped_column(Integer, default=0)
|
||||
started_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
ended_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
|
||||
error_message: Mapped[str] = mapped_column(String(1024), default="")
|
||||
raw_json: Mapped[str] = mapped_column(Text, default="{}")
|
||||
|
||||
|
||||
class UmeInventoryNE(Base):
|
||||
__tablename__ = "ume_inventory_ne"
|
||||
|
||||
ne_id: Mapped[str] = mapped_column(String(128), primary_key=True)
|
||||
ne_name: Mapped[str] = mapped_column(String(256), default="", index=True)
|
||||
user_label: Mapped[str] = mapped_column(String(256), default="", index=True)
|
||||
ip_address: Mapped[str] = mapped_column(String(128), default="", index=True)
|
||||
ne_type: Mapped[str] = mapped_column(String(128), default="")
|
||||
vendor: Mapped[str] = mapped_column(String(64), default="ZTE")
|
||||
source_type: Mapped[str] = mapped_column(String(64), default="ume_restconf")
|
||||
first_seen_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
last_seen_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, index=True)
|
||||
raw_json: Mapped[str] = mapped_column(Text, default="{}")
|
||||
|
||||
|
||||
class UmeInventoryEquipmentHolder(Base):
|
||||
__tablename__ = "ume_inventory_equipment_holder"
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
||||
ne_id: Mapped[str] = mapped_column(ForeignKey("ume_inventory_ne.ne_id"), index=True)
|
||||
holder_name: Mapped[str] = mapped_column(String(256), index=True, default="")
|
||||
holder_type: Mapped[str] = mapped_column(String(128), default="")
|
||||
holder_state: Mapped[str] = mapped_column(String(128), default="")
|
||||
first_seen_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
last_seen_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, index=True)
|
||||
raw_json: Mapped[str] = mapped_column(Text, default="{}")
|
||||
|
||||
|
||||
class UmeAlarmCurrent(Base):
|
||||
__tablename__ = "ume_alarms_current"
|
||||
|
||||
alarm_key: Mapped[str] = mapped_column(String(256), primary_key=True)
|
||||
ne_id: Mapped[str] = mapped_column(String(128), default="", index=True)
|
||||
ne_name: Mapped[str] = mapped_column(String(256), default="", index=True)
|
||||
user_label: Mapped[str] = mapped_column(String(256), default="", index=True)
|
||||
object_name: Mapped[str] = mapped_column(String(512), default="", index=True)
|
||||
event_type: Mapped[str] = mapped_column(String(128), default="")
|
||||
native_probable_cause: Mapped[str] = mapped_column(String(256), default="")
|
||||
perceived_severity: Mapped[str] = mapped_column(String(64), default="", index=True)
|
||||
is_cleared: Mapped[str] = mapped_column(String(16), default="", index=True)
|
||||
time_created: Mapped[str] = mapped_column(String(64), default="", index=True)
|
||||
root_cause_alarm_indication: Mapped[str] = mapped_column(String(32), default="")
|
||||
first_seen_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
last_seen_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, index=True)
|
||||
raw_json: Mapped[str] = mapped_column(Text, default="{}")
|
||||
|
||||
|
||||
class UmeAlarmHistory(Base):
|
||||
__tablename__ = "ume_alarms_history"
|
||||
|
||||
alarm_key: Mapped[str] = mapped_column(String(256), primary_key=True)
|
||||
ne_id: Mapped[str] = mapped_column(String(128), default="", index=True)
|
||||
ne_name: Mapped[str] = mapped_column(String(256), default="", index=True)
|
||||
user_label: Mapped[str] = mapped_column(String(256), default="", index=True)
|
||||
object_name: Mapped[str] = mapped_column(String(512), default="", index=True)
|
||||
event_type: Mapped[str] = mapped_column(String(128), default="")
|
||||
native_probable_cause: Mapped[str] = mapped_column(String(256), default="")
|
||||
perceived_severity: Mapped[str] = mapped_column(String(64), default="", index=True)
|
||||
is_cleared: Mapped[str] = mapped_column(String(16), default="", index=True)
|
||||
time_created: Mapped[str] = mapped_column(String(64), default="", index=True)
|
||||
root_cause_alarm_indication: Mapped[str] = mapped_column(String(32), default="")
|
||||
first_seen_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
last_seen_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, index=True)
|
||||
raw_json: Mapped[str] = mapped_column(Text, default="{}")
|
||||
|
||||
|
||||
class UmeTokenCache(Base):
|
||||
__tablename__ = "ume_token_cache"
|
||||
|
||||
cache_key: Mapped[str] = mapped_column(String(256), primary_key=True)
|
||||
token: Mapped[str] = mapped_column(Text, default="")
|
||||
expires_at_epoch_s: Mapped[int] = mapped_column(Integer, default=0)
|
||||
lock_owner: Mapped[str] = mapped_column(String(128), default="", index=True)
|
||||
lock_expires_at_epoch_s: Mapped[int] = mapped_column(Integer, default=0, index=True)
|
||||
updated_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, index=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue