SLM config now sync to SLMM, SLMM caches configs for speed
This commit is contained in:
67
sync_slms_to_slmm.py
Executable file
67
sync_slms_to_slmm.py
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
One-time script to sync existing SLM devices from Terra-View roster to SLMM cache.
|
||||
Run this after implementing the automatic sync to backfill existing devices.
|
||||
"""
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Add parent directory to path for imports
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from backend.database import SessionLocal
|
||||
from backend.models import RosterUnit
|
||||
from backend.routers.roster_edit import sync_slm_to_slmm_cache
|
||||
import logging
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def sync_all_slms():
|
||||
"""Sync all SLM devices from Terra-View roster to SLMM cache."""
|
||||
db = SessionLocal()
|
||||
try:
|
||||
# Get all SLM devices from Terra-View (source of truth)
|
||||
slm_devices = db.query(RosterUnit).filter_by(
|
||||
device_type="sound_level_meter"
|
||||
).all()
|
||||
|
||||
logger.info(f"Found {len(slm_devices)} SLM devices in Terra-View roster")
|
||||
|
||||
success_count = 0
|
||||
failed_count = 0
|
||||
|
||||
for device in slm_devices:
|
||||
logger.info(f"\nProcessing: {device.id}")
|
||||
logger.info(f" Host: {device.slm_host}")
|
||||
logger.info(f" TCP Port: {device.slm_tcp_port}")
|
||||
logger.info(f" Modem: {device.deployed_with_modem_id}")
|
||||
|
||||
result = await sync_slm_to_slmm_cache(
|
||||
unit_id=device.id,
|
||||
host=device.slm_host,
|
||||
tcp_port=device.slm_tcp_port,
|
||||
ftp_port=device.slm_ftp_port,
|
||||
deployed_with_modem_id=device.deployed_with_modem_id,
|
||||
db=db
|
||||
)
|
||||
|
||||
if result["success"]:
|
||||
logger.info(f"✓ {device.id}: {result['message']}")
|
||||
success_count += 1
|
||||
else:
|
||||
logger.error(f"✗ {device.id}: {result['message']}")
|
||||
failed_count += 1
|
||||
|
||||
logger.info(f"\n{'='*60}")
|
||||
logger.info(f"Cache sync complete: {success_count} succeeded, {failed_count} failed")
|
||||
logger.info(f"{'='*60}")
|
||||
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(sync_all_slms())
|
||||
Reference in New Issue
Block a user