dev@locazia: add service healthy montoring

This commit is contained in:
user committed 2024-03-03 14:01:46 +03:00
1 parent e0a4514fef
commit fcc5ccbe65
9 files changed
+139 -16

No files matched your search

+39 -10
View File
@@ -1,10 +1,11 @@
from sanic import response
from base58 import b58encode
from app.core._secrets import hot_pubkey, service_wallet
from base58 import b58encode, b58decode
from app.core._secrets import hot_pubkey, service_wallet, hot_privkey
from app.core._blockchain.ton.platform import platform
from datetime import datetime, timedelta
from app.core._crypto.signer import Signer
import subprocess
import docker
from pprint import pprint
import json
def get_git_info():
@@ -13,19 +14,47 @@ def get_git_info():
return branch_name, commit_hash
async def s_api_system(request):
client = docker.from_env()
containers = client.containers.list(all=True)
pprint(containers)
async def s_api_system(request): # /api/node
return response.json({
'id': b58encode(hot_pubkey).decode(),
'master_address': platform.address.to_string(1, 1, 1),
'node_address': service_wallet.address.to_string(1, 1, 1),
'master_address': platform.address.to_string(1, 1, 1),
'indexer_height': 0,
'services': {
service_key: {
'status': service['status'],
'delay': int((datetime.now() - service['timestamp']).total_seconds()) if service['timestamp'] else -1,
}
for service_key, service in request.app.ctx.memory.known_states.items()
}
})
async def s_api_system_send_status(request):
if not request.json:
return response.json({'error': 'No data'}, status=400)
message = request.json.get('message', '')
signature = request.json.get('signature', '')
if not message or not signature:
return response.json({'error': 'No message or signature'}, status=400)
signer = Signer(hot_privkey)
if not signer.verify(message, signature):
return response.json({'error': 'Invalid signature'}, status=400)
message = b58decode(message)
message = json.loads(message)
request.app.ctx.memory.known_states[
message['service']
] = {
'status': message['status'],
'timestamp': datetime.now(),
}
return response.json({'message': 'Status received'})
async def s_api_system_version(request):
branch_name, commit_hash = get_git_info()
return response.json({