Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions mytoncore/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
thr_sleep,
Dict
)
from mytoninstaller.node_args import get_node_args


def Init(local):
Expand Down Expand Up @@ -460,6 +461,49 @@ def get_db_stats():
# end define


def get_cpu_name():
with open('/proc/cpuinfo') as f:
for line in f:
if line.strip():
if line.rstrip('\n').startswith('model name'):
return line.rstrip('\n').split(':')[1].strip()
return None


def is_host_virtual():
try:
with open('/sys/class/dmi/id/product_name') as f:
product_name = f.read().strip().lower()
if 'virtual' in product_name or 'kvm' in product_name or 'qemu' in product_name or 'vmware' in product_name:
return {'virtual': True, 'product_name': product_name}
return {'virtual': False, 'product_name': product_name}
except FileNotFoundError:
return {'virtual': None, 'product_name': None}


def do_beacon_ping(host, count, timeout):
args = ['ping', '-c', str(count), '-W', str(timeout), host]
process = subprocess.run(args, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=timeout)
output = process.stdout.decode("utf-8")
avg = output.split('\n')[-1].split('=')[1].split('/')[1]
return float(avg)


def get_pings_values():
return {
'beacon-eu-01.toncenter.com': do_beacon_ping('beacon-eu-01.toncenter.com', 1, 3),
'beacon-apac-01.toncenter.com': do_beacon_ping('beacon-apac-01.toncenter.com', 1, 3)
}


def get_validator_disk_name():
process = subprocess.run("df -h /var/ton-work/ | sed -n '2 p' | awk '{print $1}'", stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=3, shell=True)
output = process.stdout.decode("utf-8")
return output.strip()


def Telemetry(local, ton):
sendTelemetry = local.db.get("sendTelemetry")
if sendTelemetry is not True:
Expand All @@ -484,6 +528,10 @@ def Telemetry(local, ton):
data["uname"] = GetUname()
data["vprocess"] = GetValidatorProcessInfo()
data["dbStats"] = get_db_stats()
data["nodeArgs"] = get_node_args()
data["cpuInfo"] = {'cpuName': get_cpu_name(), 'virtual': is_host_virtual()}
data["validatorDiskName"] = get_validator_disk_name()
data["pings"] = get_pings_values()
elections = local.try_function(ton.GetElectionEntries)
complaints = local.try_function(ton.GetComplaints)

Expand Down