belel-protocol / src /protocol /monitoring /propagation_failover.py
TTOPM's picture
Upload 4 files
8489121 verified
# src/protocol/monitoring/propagation_failover.py πŸ›°οΈ
import logging
from datetime import datetime
from src.protocol.permanent_memory import PermanentMemory
from src.protocol.decentralized_comm.ipfs_client import IPFSClient
logging.basicConfig(level=logging.INFO)
class PropagationFailover:
def __init__(self, memory: PermanentMemory, ipfs_client: IPFSClient, repo_path: str):
self.memory = memory
self.ipfs_client = ipfs_client
self.repo_path = repo_path
async def execute_failover(self):
timestamp = datetime.utcnow().isoformat() + "Z"
try:
res = self.ipfs_client.add_directory(self.repo_path)
mirror_hash = res['Hash']
logging.warning(f"πŸ›‘ Failover triggered. Repo mirrored to IPFS: {mirror_hash}")
await self.memory.store_memory(
{
"event": "failover_triggered",
"repo_mirror_hash": mirror_hash,
"timestamp": timestamp
},
context_tags=["failover", "propagation", "recovery"],
creator_id="PropagationFailover"
)
except Exception as e:
logging.error(f"❌ Failover failed: {str(e)}")