summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Frye <joshfng@gmail.com>2016-06-28 22:30:01 -0400
committerJosh Frye <joshfng@gmail.com>2016-06-29 16:02:12 -0400
commit98238a27c7b0e5d4c7a674a78c859150966e6f8b (patch)
tree64a040513f8e231c3766e0c81233a8986ca8446f
parentd171ff17beb82c2378c1eae52dada91481a48239 (diff)
downloadgitlab-ce-98238a27c7b0e5d4c7a674a78c859150966e6f8b.tar.gz
Loop all disks when displaying system infoissue-18886
-rw-r--r--Gemfile1
-rw-r--r--Gemfile.lock3
-rw-r--r--app/controllers/admin/system_info_controller.rb25
-rw-r--r--app/views/admin/system_info/show.html.haml7
-rw-r--r--config/dependency_decisions.yml6
-rw-r--r--spec/features/admin/admin_system_info_spec.rb2
6 files changed, 38 insertions, 6 deletions
diff --git a/Gemfile b/Gemfile
index a2386770992..4f7d7cf7089 100644
--- a/Gemfile
+++ b/Gemfile
@@ -349,3 +349,4 @@ gem 'health_check', '~> 1.5.1'
# System information
gem 'vmstat', '~> 2.1.0'
+gem 'sys-filesystem', '~> 1.1.6'
diff --git a/Gemfile.lock b/Gemfile.lock
index c1d2f1fdf5a..48465331a68 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -716,6 +716,8 @@ GEM
activerecord (>= 4.1, < 5.1)
state_machines-activemodel (>= 0.3.0)
stringex (2.5.2)
+ sys-filesystem (1.1.6)
+ ffi
systemu (2.6.5)
task_list (1.0.2)
html-pipeline
@@ -970,6 +972,7 @@ DEPENDENCIES
spring-commands-teaspoon (~> 0.0.2)
sprockets (~> 3.6.0)
state_machines-activerecord (~> 0.4.0)
+ sys-filesystem (~> 1.1.6)
task_list (~> 1.0.2)
teaspoon (~> 1.1.0)
teaspoon-jasmine (~> 2.2.0)
diff --git a/app/controllers/admin/system_info_controller.rb b/app/controllers/admin/system_info_controller.rb
index 3c67370b667..cc63009cdc0 100644
--- a/app/controllers/admin/system_info_controller.rb
+++ b/app/controllers/admin/system_info_controller.rb
@@ -1,13 +1,32 @@
class Admin::SystemInfoController < Admin::ApplicationController
def show
+ excluded_mounts = [
+ "nobrowse",
+ "read-only",
+ "ro"
+ ]
+
system_info = Vmstat.snapshot
+ mounts = Sys::Filesystem.mounts
+
+ @disks = []
+ mounts.each do |mount|
+ options = mount.options.split(', ')
+
+ next unless excluded_mounts.each { |em| break if options.include?(em) }
+
+ 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
+ })
+ end
@cpus = system_info.cpus.length
@mem_used = system_info.memory.active_bytes
@mem_total = system_info.memory.total_bytes
-
- @disk_used = system_info.disks[0].used_bytes
- @disk_total = system_info.disks[0].total_bytes
end
end
diff --git a/app/views/admin/system_info/show.html.haml b/app/views/admin/system_info/show.html.haml
index 3ef2f20b589..1bf0ac1ff75 100644
--- a/app/views/admin/system_info/show.html.haml
+++ b/app/views/admin/system_info/show.html.haml
@@ -17,6 +17,9 @@
%h1= "#{number_to_human_size(@mem_used)} / #{number_to_human_size(@mem_total)}"
.col-sm-4
.light-well
- %h4 Disk
+ %h4 Disks
.data
- %h1= "#{number_to_human_size(@disk_used)} / #{number_to_human_size(@disk_total)}"
+ - @disks.each do |disk|
+ %h1= "#{number_to_human_size(disk[:bytes_used])} / #{number_to_human_size(disk[:bytes_total])}"
+ %p= "#{disk[:disk_name]}"
+ %p= "#{disk[:mount_path]}"
diff --git a/config/dependency_decisions.yml b/config/dependency_decisions.yml
index 436a2c5e17a..293f2b71d65 100644
--- a/config/dependency_decisions.yml
+++ b/config/dependency_decisions.yml
@@ -181,3 +181,9 @@
:why: Equivalent to LGPLv2
:versions: []
:when: 2016-06-07 17:14:10.907682000 Z
+- - :whitelist
+ - Artistic 2.0
+ - :who: Josh Frye
+ :why: Disk/mount information display on Admin pages
+ :versions: []
+ :when: 2016-06-29 16:32:45.432113000 Z
diff --git a/spec/features/admin/admin_system_info_spec.rb b/spec/features/admin/admin_system_info_spec.rb
index dbc1d829b67..f4e5c26b519 100644
--- a/spec/features/admin/admin_system_info_spec.rb
+++ b/spec/features/admin/admin_system_info_spec.rb
@@ -11,7 +11,7 @@ describe 'Admin System Info' do
expect(page).to have_content 'CPU'
expect(page).to have_content 'Memory'
- expect(page).to have_content 'Disk'
+ expect(page).to have_content 'Disks'
end
end
end