修正Windows平台日志磁盘空间显示可能不正确的问题。

pull/32/merge
apexliu 2017-03-04 04:40:40 +08:00
parent e6d3696f0d
commit 6700c818cb
2 changed files with 17 additions and 13 deletions

View File

@ -17,27 +17,32 @@ def get_free_space_mb(folder):
""" Return folder/drive free space (in bytes) """ Return folder/drive free space (in bytes)
""" """
if platform.system() == 'Windows': if platform.system() == 'Windows':
free_bytes = ctypes.c_ulonglong(0) _free_bytes = ctypes.c_ulonglong(0)
total_bytes = ctypes.c_ulonglong(0) _total_bytes = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW(None, None, ctypes.pointer(total_bytes), ctypes.pointer(free_bytes)) ctypes.windll.kernel32.GetDiskFreeSpaceExW(folder, None, ctypes.pointer(_total_bytes), ctypes.pointer(_free_bytes))
return total_bytes.value / 1024 / 1024 / 1024, free_bytes.value / 1024 / 1024 / 1024 # return _total_bytes.value / 1024 / 1024 / 1024, _free_bytes.value / 1024 / 1024 / 1024
total_bytes = _total_bytes.value
free_bytes = _free_bytes.value
else: else:
st = os.statvfs(folder) st = os.statvfs(folder)
return st.f_blocks * st.f_frsize / 1024 / 1024 / 1024, st.f_bavail * st.f_frsize / 1024 / 1024 / 1024 # return st.f_blocks * st.f_frsize / 1024 / 1024 / 1024, st.f_bavail * st.f_frsize / 1024 / 1024 / 1024
total_bytes = st.f_blocks * st.f_frsize
free_bytes = st.f_bavail * st.f_frsize
return total_bytes, free_bytes
class LogHandler(SwxAdminHandler): class LogHandler(SwxAdminHandler):
def get(self): def get(self):
#
user_list = user.get_user_list() user_list = user.get_user_list()
total_size, free_size = get_free_space_mb(cfg.data_path) total_size, free_size = get_free_space_mb(cfg.data_path)
# config_list = host.get_config_list() # config_list = host.get_config_list()
ts_server = dict() ts_server = dict()
ts_server['ip'] = cfg.core.rpc.ip #config_list['ts_server_ip'] ts_server['ip'] = cfg.core.rpc.ip # config_list['ts_server_ip']
ts_server['port'] = cfg.core.rpc.port #cfg.server_port ts_server['port'] = cfg.core.rpc.port # cfg.server_port
self.render('log/index.mako', user_list=user_list, total_size=int(total_size), free_size=int(free_size), ts_server=ts_server) self.render('log/index.mako', user_list=user_list, total_size=total_size, free_size=free_size, ts_server=ts_server)
class RecordHandler(SwxAdminHandler): class RecordHandler(SwxAdminHandler):

View File

@ -9,15 +9,14 @@ ywl.on_init = function (cb_stack, cb_args) {
// 创建页面控件对象 // 创建页面控件对象
//=================================== //===================================
// 表格数据 // 表格数据
//console.log('ywl.page_options.total_size,', ywl.page_options.total_size, ywl.page_options.free_size);
var disk_rate = parseInt(ywl.page_options.free_size * 100 / ywl.page_options.total_size); var disk_rate = parseInt(ywl.page_options.free_size * 100 / ywl.page_options.total_size);
$('#disk-status').text('日志磁盘大小:' + ywl.page_options.total_size + 'GB,剩余空间:' + ywl.page_options.free_size + 'GB,空闲' + disk_rate + '%'); $('#disk-status').text('日志磁盘大小:' + size2str(ywl.page_options.total_size, 2) + ',剩余空间:' + size2str(ywl.page_options.free_size, 2) + ',空闲' + disk_rate + '%');
if (disk_rate < 10) { if (disk_rate < 10) {
$('#disk-status').removeClass().addClass('badge badge-danger'); $('#disk-status').removeClass().addClass('badge badge-danger');
} else if (disk_rate < 50) { } else if (disk_rate < 30) {
$('#disk-status').removeClass().addClass('badge badge-warning'); $('#disk-status').removeClass().addClass('badge badge-warning');
} else { } else {
$('#disk-status').removeClass().addClass('badge badge-info'); $('#disk-status').removeClass().addClass('badge badge-ignore');
} }
var host_table_options = { var host_table_options = {