mirror of
https://github.com/Pardus-LiderAhenk/ahenk
synced 2024-11-25 11:12:15 +03:00
ssd and hdd disks information added
This commit is contained in:
parent
d2b6599cb0
commit
3781c5e6d0
5 changed files with 148 additions and 5 deletions
|
@ -2,11 +2,12 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Author: Volkan Şahin <volkansah.in> <bm.volkansahin@gmail.com>
|
# Author: Volkan Şahin <volkansah.in> <bm.volkansahin@gmail.com>
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
from base.scope import Scope
|
from base.scope import Scope
|
||||||
from base.system.system import System
|
from base.system.system import System
|
||||||
from base.util.util import Util
|
from base.util.util import Util
|
||||||
import os
|
from base.system.disk_info import DiskInfo
|
||||||
|
|
||||||
|
|
||||||
# TODO Message Factory
|
# TODO Message Factory
|
||||||
|
@ -66,6 +67,7 @@ class Messaging(object):
|
||||||
return str(json_data)
|
return str(json_data)
|
||||||
|
|
||||||
def login_msg(self, username,ip=None):
|
def login_msg(self, username,ip=None):
|
||||||
|
ssd_list, hdd_list = DiskInfo.get_all_disks()
|
||||||
data = dict()
|
data = dict()
|
||||||
data['type'] = 'LOGIN'
|
data['type'] = 'LOGIN'
|
||||||
data['username'] = username
|
data['username'] = username
|
||||||
|
@ -89,6 +91,12 @@ class Messaging(object):
|
||||||
data['hardware.printers'] = str(System.Hardware.printers()),
|
data['hardware.printers'] = str(System.Hardware.printers()),
|
||||||
data['hardware.systemDefinitions'] = str(System.Hardware.system_definitions()),
|
data['hardware.systemDefinitions'] = str(System.Hardware.system_definitions()),
|
||||||
|
|
||||||
|
if len(ssd_list) > 0:
|
||||||
|
data['hardware.disk.ssd.info'] = str(ssd_list)
|
||||||
|
|
||||||
|
if len(hdd_list) > 0:
|
||||||
|
data['hardware.disk.hdd.info'] = str(hdd_list)
|
||||||
|
|
||||||
json_data = json.dumps(data)
|
json_data = json.dumps(data)
|
||||||
self.logger.debug('Login message was created')
|
self.logger.debug('Login message was created')
|
||||||
return json_data
|
return json_data
|
||||||
|
|
|
@ -20,6 +20,7 @@ from base.registration.execute_cancel_sssd_authentication import ExecuteCancelSS
|
||||||
from base.registration.execute_sssd_authentication import ExecuteSSSDAuthentication
|
from base.registration.execute_sssd_authentication import ExecuteSSSDAuthentication
|
||||||
from base.registration.execute_sssd_ad_authentication import ExecuteSSSDAdAuthentication
|
from base.registration.execute_sssd_ad_authentication import ExecuteSSSDAdAuthentication
|
||||||
from base.registration.execute_cancel_sssd_ad_authentication import ExecuteCancelSSSDAdAuthentication
|
from base.registration.execute_cancel_sssd_ad_authentication import ExecuteCancelSSSDAdAuthentication
|
||||||
|
from base.system.disk_info import DiskInfo
|
||||||
|
|
||||||
class Registration:
|
class Registration:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -297,6 +298,12 @@ class Registration:
|
||||||
'agentVersion': Util.get_agent_version(),
|
'agentVersion': Util.get_agent_version(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssd_list, hdd_list = DiskInfo.get_all_disks()
|
||||||
|
if len(ssd_list) > 0:
|
||||||
|
params['hardware.disk.ssd.info'] = str(ssd_list)
|
||||||
|
if len(hdd_list) > 0:
|
||||||
|
params['hardware.disk.hdd.info'] = str(hdd_list)
|
||||||
|
|
||||||
return json.dumps(params)
|
return json.dumps(params)
|
||||||
|
|
||||||
def unregister(self):
|
def unregister(self):
|
||||||
|
|
115
src/base/system/disk_info.py
Normal file
115
src/base/system/disk_info.py
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
# !/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Author: Agah Hulusi ÖZ <enghulusi@gmail.com>
|
||||||
|
|
||||||
|
from base.util.util import Util
|
||||||
|
import psutil
|
||||||
|
|
||||||
|
# HDD and SSD disk information
|
||||||
|
class DiskInfo():
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def total_disk_used():
|
||||||
|
ssd_list, hdd_list = DiskInfo.get_all_disks()
|
||||||
|
total_disk_usage = 0
|
||||||
|
if len(ssd_list) > 0:
|
||||||
|
for disk in ssd_list:
|
||||||
|
total_disk_usage += int(disk['used'])
|
||||||
|
if len(hdd_list) > 0:
|
||||||
|
for disk in hdd_list:
|
||||||
|
total_disk_usage += int(disk['used'])
|
||||||
|
return total_disk_usage
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def total_disk():
|
||||||
|
ssd_list, hdd_list = DiskInfo.get_all_disks()
|
||||||
|
total_size = 0
|
||||||
|
for disk in ssd_list:
|
||||||
|
total_size += int(disk['total'])
|
||||||
|
for disk in hdd_list:
|
||||||
|
total_size += int(disk['total'])
|
||||||
|
return total_size
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_all_disks():
|
||||||
|
result_code, p_out, p_err = Util.execute("lsblk -b -o NAME,TYPE,ROTA,SIZE,RM,HOTPLUG,MOUNTPOINT,FSUSED | grep -v loop | awk '$5 == \"0\" { print $0 }'")
|
||||||
|
txt = p_out.split("\n")
|
||||||
|
while '' in txt:
|
||||||
|
txt.remove('')
|
||||||
|
detail_txt = []
|
||||||
|
ssd_list = []
|
||||||
|
hdd_list = []
|
||||||
|
# Ignore USB from list
|
||||||
|
for item in txt:
|
||||||
|
item = item.split()
|
||||||
|
detail_txt.append(item)
|
||||||
|
# SSD and HDD list
|
||||||
|
for disk in detail_txt:
|
||||||
|
# Second element of disk equal to rotation type.
|
||||||
|
# Rotation type show that disk is SSD or HDD
|
||||||
|
# If it equals to "0" SSD
|
||||||
|
# If it equals to "1" HDD
|
||||||
|
if disk[2] == "0" and disk[1] == "disk":
|
||||||
|
ssd_list.append({
|
||||||
|
"name": disk[0],
|
||||||
|
"type": "SSD",
|
||||||
|
"total": disk[3],
|
||||||
|
"used": 0,
|
||||||
|
})
|
||||||
|
elif disk[2] == "1" and disk[1] == "disk":
|
||||||
|
hdd_list.append({
|
||||||
|
"name": disk[0],
|
||||||
|
"type": "HDD",
|
||||||
|
"total": disk[3],
|
||||||
|
"used": 0,
|
||||||
|
})
|
||||||
|
# Calculate the usage
|
||||||
|
used = 0
|
||||||
|
ssd_list_counter = 0
|
||||||
|
hdd_list_counter = 0
|
||||||
|
is_first_disk = True
|
||||||
|
resource_name = 0
|
||||||
|
resource_disk = 0
|
||||||
|
for item in detail_txt:
|
||||||
|
if item[1] == "disk":
|
||||||
|
if is_first_disk:
|
||||||
|
total = item[3]
|
||||||
|
name = item[0]
|
||||||
|
type = item[2]
|
||||||
|
is_first_disk = False
|
||||||
|
else:
|
||||||
|
if type == "0":
|
||||||
|
ssd_list[ssd_list_counter]["used"] = used
|
||||||
|
ssd_list_counter += 1
|
||||||
|
elif type == "1":
|
||||||
|
hdd_list[hdd_list_counter]["used"] = used
|
||||||
|
hdd_list_counter += 1
|
||||||
|
name = item[0]
|
||||||
|
used = 0
|
||||||
|
total = item[3]
|
||||||
|
type = item[2]
|
||||||
|
else:
|
||||||
|
if len(item) > 7 and item[0] != "NAME":
|
||||||
|
if item[6] == "/":
|
||||||
|
resource_disk = psutil.disk_usage(item[6])[0]
|
||||||
|
resource_name = name
|
||||||
|
used += int(item[7])
|
||||||
|
for i in ssd_list:
|
||||||
|
if i["name"] == resource_name:
|
||||||
|
i["total"] = resource_disk
|
||||||
|
for i in hdd_list:
|
||||||
|
if i["name"] == resource_name:
|
||||||
|
i["total"] = resource_disk
|
||||||
|
if type == "0":
|
||||||
|
ssd_list[ssd_list_counter]["used"] = used
|
||||||
|
ssd_list_counter += 1
|
||||||
|
elif type == "1":
|
||||||
|
hdd_list[hdd_list_counter]["used"] = used
|
||||||
|
hdd_list_counter += 1
|
||||||
|
for item in ssd_list:
|
||||||
|
item["total"]= int(int(item["total"]) / (1000 * 1000))
|
||||||
|
item["used"] = int(int(item["used"]) / (1000 * 1000))
|
||||||
|
for item in hdd_list:
|
||||||
|
item["total"] = int(int(item["total"]) / (1000 * 1000))
|
||||||
|
item["used"] = int(int(item["used"]) / (1000 * 1000))
|
||||||
|
return ssd_list, hdd_list
|
|
@ -434,15 +434,18 @@ class System:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def total():
|
def total():
|
||||||
return int(int(psutil.disk_usage('/')[0]) / (1000 * 1000))
|
return int(DiskInfo.total_disk())
|
||||||
|
# return int(int(psutil.disk_usage('/')[0]) / (1000 * 1000))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def used():
|
def used():
|
||||||
return int(int(psutil.disk_usage('/')[1]) / (1000 * 1000))
|
return int(DiskInfo.total_disk_used())
|
||||||
|
# return int(int(psutil.disk_usage('/')[1]) / (1000 * 1000))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def free():
|
def free():
|
||||||
return int(int(psutil.disk_usage('/')[2]) / (1000 * 1000))
|
return int(DiskInfo.total_disk_free())
|
||||||
|
# return int(int(psutil.disk_usage('/')[2]) / (1000 * 1000))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def percent():
|
def percent():
|
||||||
|
|
|
@ -3,9 +3,12 @@
|
||||||
# Author: Cemre ALPSOY <cemre.alpsoy@agem.com.tr>
|
# Author: Cemre ALPSOY <cemre.alpsoy@agem.com.tr>
|
||||||
# Author: Emre Akkaya <emre.akkaya@agem.com.tr>
|
# Author: Emre Akkaya <emre.akkaya@agem.com.tr>
|
||||||
|
|
||||||
from base.plugin.abstract_plugin import AbstractPlugin
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
from psutil import disk_io_counters
|
||||||
|
from base.plugin.abstract_plugin import AbstractPlugin
|
||||||
|
from base.system.disk_info import DiskInfo
|
||||||
|
|
||||||
|
|
||||||
class ResourceUsage(AbstractPlugin):
|
class ResourceUsage(AbstractPlugin):
|
||||||
def __init__(self, data, context):
|
def __init__(self, data, context):
|
||||||
|
@ -19,6 +22,7 @@ class ResourceUsage(AbstractPlugin):
|
||||||
try:
|
try:
|
||||||
device = ""
|
device = ""
|
||||||
self.logger.debug("Gathering resource usage for disk, memory and CPU.")
|
self.logger.debug("Gathering resource usage for disk, memory and CPU.")
|
||||||
|
ssd_list, hdd_list = DiskInfo.get_all_disks()
|
||||||
for part in self.Hardware.Disk.partitions():
|
for part in self.Hardware.Disk.partitions():
|
||||||
if len(device) != 0:
|
if len(device) != 0:
|
||||||
device += ", "
|
device += ", "
|
||||||
|
@ -36,6 +40,12 @@ class ResourceUsage(AbstractPlugin):
|
||||||
'CPU Actual Hz': self.Hardware.Cpu.hz_actual(),
|
'CPU Actual Hz': self.Hardware.Cpu.hz_actual(),
|
||||||
'CPU Advertised Hz': self.Hardware.Cpu.hz_advertised()
|
'CPU Advertised Hz': self.Hardware.Cpu.hz_advertised()
|
||||||
}
|
}
|
||||||
|
if len(ssd_list) > 0:
|
||||||
|
data['hardware.disk.ssd.info'] = str(ssd_list)
|
||||||
|
|
||||||
|
if len(hdd_list) > 0:
|
||||||
|
data['hardware.disk.hdd.info'] = str(hdd_list)
|
||||||
|
|
||||||
self.logger.debug("Resource usage info gathered.")
|
self.logger.debug("Resource usage info gathered.")
|
||||||
self.context.create_response(code=self.message_code.TASK_PROCESSED.value,
|
self.context.create_response(code=self.message_code.TASK_PROCESSED.value,
|
||||||
message='Anlık kaynak kullanım bilgisi başarıyla toplandı.',
|
message='Anlık kaynak kullanım bilgisi başarıyla toplandı.',
|
||||||
|
|
Loading…
Reference in a new issue