diff options
author | Stan Hu <stanhu@gmail.com> | 2016-07-01 02:05:22 +0000 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2016-07-01 02:05:22 +0000 |
commit | ab81ea1e8177742a0dfed2c7cf922bb03a8b6c51 (patch) | |
tree | 7ff12d698fcb279102c79d3c3b73b75b472db9e8 | |
parent | 3041c43380ba6e5d8bbc029a9dcfecfdcf7bcf47 (diff) | |
parent | 7dbc3d97d1b4706fa7bc92dc7f89c33e7a1cee01 (diff) | |
download | gitlab-ce-ab81ea1e8177742a0dfed2c7cf922bb03a8b6c51.tar.gz |
Merge branch 'improve-system-info' into 'master'
Catch permission denied errors and ignore the disk
See merge request !5017
-rw-r--r-- | app/controllers/admin/system_info_controller.rb | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/app/controllers/admin/system_info_controller.rb b/app/controllers/admin/system_info_controller.rb index cc63009cdc0..e4c73008826 100644 --- a/app/controllers/admin/system_info_controller.rb +++ b/app/controllers/admin/system_info_controller.rb @@ -1,27 +1,54 @@ class Admin::SystemInfoController < Admin::ApplicationController - def show - excluded_mounts = [ - "nobrowse", - "read-only", - "ro" - ] + EXCLUDED_MOUNT_OPTIONS = [ + 'nobrowse', + 'read-only', + 'ro' + ] + + EXCLUDED_MOUNT_TYPES = [ + 'autofs', + 'binfmt_misc', + 'cgroup', + 'debugfs', + 'devfs', + 'devpts', + 'devtmpfs', + 'efivarfs', + 'fuse.gvfsd-fuse', + 'fuseblk', + 'fusectl', + 'hugetlbfs', + 'mqueue', + 'proc', + 'pstore', + 'securityfs', + 'sysfs', + 'tmpfs', + 'tracefs', + 'vfat' + ] + def show system_info = Vmstat.snapshot mounts = Sys::Filesystem.mounts @disks = [] mounts.each do |mount| - options = mount.options.split(', ') + mount_options = mount.options.split(',') - next unless excluded_mounts.each { |em| break if options.include?(em) } + next if (EXCLUDED_MOUNT_OPTIONS & mount_options).any? + next if (EXCLUDED_MOUNT_TYPES & [mount.mount_type]).any? - disk = Sys::Filesystem.stat(mount.mount_point) - @disks.push({ + begin + disk = Sys::Filesystem.stat(mount.mount_point) + @disks.push({ bytes_total: disk.bytes_total, bytes_used: disk.bytes_used, disk_name: mount.name, mount_path: disk.path - }) + }) + rescue Sys::Filesystem::Error + end end @cpus = system_info.cpus.length |