mirror of
https://github.com/azaion/annotations.git
synced 2026-04-22 12:56:30 +00:00
switch from hardware object to string
and replace mac address to disk serial number for more predictable hash key
This commit is contained in:
@@ -1,25 +1,6 @@
|
||||
import re
|
||||
import subprocess
|
||||
import psutil
|
||||
import pynvml
|
||||
|
||||
cdef class HardwareInfo:
|
||||
def __init__(self, str cpu, str gpu, str memory, str mac_address):
|
||||
self.cpu = cpu
|
||||
self.gpu = gpu
|
||||
self.memory = memory
|
||||
self.mac_address = mac_address
|
||||
|
||||
cdef to_json_object(self):
|
||||
return {
|
||||
"CPU": self.cpu,
|
||||
"GPU": self.gpu,
|
||||
"MacAddress": self.mac_address,
|
||||
"Memory": self.memory
|
||||
}
|
||||
|
||||
def __str__(self):
|
||||
return f'CPU: {self.cpu}. GPU: {self.gpu}. Memory: {self.memory}. MAC Address: {self.mac_address}'
|
||||
|
||||
cdef class HardwareService:
|
||||
"""Handles hardware information retrieval and hash generation."""
|
||||
@@ -35,15 +16,6 @@ cdef class HardwareService:
|
||||
print('Error during os type checking')
|
||||
self.is_windows = False
|
||||
|
||||
cdef get_mac_address(self, interface="Ethernet"):
|
||||
addresses = psutil.net_if_addrs()
|
||||
for interface_name, interface_info in addresses.items():
|
||||
if interface_name == interface:
|
||||
for addr in interface_info:
|
||||
if addr.family == psutil.AF_LINK:
|
||||
return addr.address.replace('-', '')
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
cdef has_nvidia_gpu():
|
||||
try:
|
||||
@@ -67,13 +39,14 @@ cdef class HardwareService:
|
||||
print('Failed to shutdown pynvml cause probably no NVidia GPU')
|
||||
pass
|
||||
|
||||
cdef HardwareInfo get_hardware_info(self):
|
||||
cdef str get_hardware_info(self):
|
||||
if self.is_windows:
|
||||
os_command = (
|
||||
"powershell -Command \""
|
||||
"Get-CimInstance -ClassName Win32_Processor | Select-Object -ExpandProperty Name | Write-Output; "
|
||||
"Get-CimInstance -ClassName Win32_VideoController | Select-Object -ExpandProperty Name | Write-Output; "
|
||||
"Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -ExpandProperty TotalVisibleMemorySize | Write-Output"
|
||||
"Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -ExpandProperty TotalVisibleMemorySize | Write-Output; "
|
||||
"(Get-Disk | Where-Object {$_.IsSystem -eq $true}).SerialNumber"
|
||||
"\""
|
||||
)
|
||||
else:
|
||||
@@ -81,6 +54,7 @@ cdef class HardwareService:
|
||||
"/bin/bash -c \" lscpu | grep 'Model name:' | cut -d':' -f2 && "
|
||||
"lspci | grep VGA | cut -d':' -f3 && "
|
||||
"free -g | grep Mem: | awk '{print $2}' && \""
|
||||
"udevadm info --query=property --name=\"/dev/$(lsblk -no pkname \"$(findmnt -n -o SOURCE --target /)\")\" | grep -E 'ID_SERIAL=|ID_SERIAL_SHORT=' | cut -d'=' -f2- | head -n1 && "
|
||||
)
|
||||
# in case of subprocess error do:
|
||||
# cdef bytes os_command_bytes = os_command.encode('utf-8')
|
||||
@@ -90,7 +64,8 @@ cdef class HardwareService:
|
||||
|
||||
cdef str cpu = lines[0].replace("Name=", "").replace(" ", " ")
|
||||
cdef str gpu = lines[1].replace("Name=", "").replace(" ", " ")
|
||||
cdef str memory = lines[2].replace("TotalVisibleMemorySize=", "").replace(" ", " ")
|
||||
cdef str mac_address = self.get_mac_address()
|
||||
# could be multiple gpus
|
||||
cdef str memory = lines[-2].replace("TotalVisibleMemorySize=", "").replace(" ", " ")
|
||||
cdef str drive_serial = lines[-1]
|
||||
|
||||
return HardwareInfo(cpu, gpu, memory, mac_address)
|
||||
return f'CPU: {cpu}. GPU: {gpu}. Memory: {memory}. Drive Serial: {drive_serial}'
|
||||
|
||||
Reference in New Issue
Block a user