swiss_admin 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +275 -0
  6. data/Rakefile +8 -0
  7. data/bin/swissadmin +8 -0
  8. data/lib/swiss_admin.rb +9 -0
  9. data/lib/swiss_admin/cli.rb +6 -0
  10. data/lib/swiss_admin/cli/cli.rb +19 -0
  11. data/lib/swiss_admin/cli/hardware_cli.rb +19 -0
  12. data/lib/swiss_admin/cli/host_cli.rb +18 -0
  13. data/lib/swiss_admin/cli/network_cli.rb +19 -0
  14. data/lib/swiss_admin/cli/user_cli.rb +25 -0
  15. data/lib/swiss_admin/cli/web_cli.rb +68 -0
  16. data/lib/swiss_admin/hardware.rb +2 -0
  17. data/lib/swiss_admin/hardware/cpus.rb +11 -0
  18. data/lib/swiss_admin/hardware/memory.rb +36 -0
  19. data/lib/swiss_admin/host.rb +1 -0
  20. data/lib/swiss_admin/host/host.rb +15 -0
  21. data/lib/swiss_admin/network.rb +1 -0
  22. data/lib/swiss_admin/network/network.rb +13 -0
  23. data/lib/swiss_admin/user.rb +1 -0
  24. data/lib/swiss_admin/user/user.rb +18 -0
  25. data/lib/swiss_admin/version.rb +3 -0
  26. data/lib/swiss_admin/web/app.rb +60 -0
  27. data/lib/swiss_admin/web/public/css/base.css +269 -0
  28. data/lib/swiss_admin/web/public/css/layout.css +58 -0
  29. data/lib/swiss_admin/web/public/css/skeleton.css +242 -0
  30. data/lib/swiss_admin/web/public/css/tables.css +46 -0
  31. data/lib/swiss_admin/web/public/images/apple-touch-icon-114x114.png +0 -0
  32. data/lib/swiss_admin/web/public/images/apple-touch-icon-72x72.png +0 -0
  33. data/lib/swiss_admin/web/public/images/apple-touch-icon.png +0 -0
  34. data/lib/swiss_admin/web/public/images/favicon.ico +0 -0
  35. data/lib/swiss_admin/web/public/javascript/jquery-2.1.0.min.js +4 -0
  36. data/lib/swiss_admin/web/views/info.erb +60 -0
  37. data/lib/swiss_admin/web/views/layout.erb +25 -0
  38. data/swiss_admin.gemspec +29 -0
  39. data/test/cli/cli_hardware_test.rb +21 -0
  40. data/test/cli/cli_host_test.rb +20 -0
  41. data/test/cli/cli_network_test.rb +17 -0
  42. data/test/cli/cli_user_test.rb +28 -0
  43. data/test/hardware_test.rb +9 -0
  44. data/test/host_test.rb +12 -0
  45. data/test/network_test.rb +14 -0
  46. data/test/test_helper.rb +28 -0
  47. data/test/user_test.rb +17 -0
  48. data/test/web/test_api.rb +70 -0
  49. data/test/web/test_host_info.rb +44 -0
  50. metadata +216 -0
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'swiss_admin/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "swiss_admin"
8
+ spec.version = SwissAdmin::VERSION
9
+ spec.authors = ["Bradley Smith"]
10
+ spec.email = ["bradleydsmith@gmail.com"]
11
+ spec.description = %q{a set of helpers for any system administrator}
12
+ spec.summary = %q{a set of helpers for any system administrator}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "minitest"
24
+ spec.add_development_dependency "rack-test"
25
+ spec.add_dependency "shelltastic", "~> 0.4"
26
+ spec.add_dependency "sinatra", "~> 1.4"
27
+ spec.add_dependency "open4", "~> 1.3"
28
+ spec.add_dependency "thor", "~> 0.18"
29
+ end
@@ -0,0 +1,21 @@
1
+ require_relative "../test_helper"
2
+
3
+
4
+ class CLIHardwareTest < MiniTest::Test
5
+ def setup
6
+ end
7
+
8
+ def test_cli_cpus_returns_cpus_count
9
+ assert_output("4\n") {
10
+ SwissAdmin::CLI.start %w{ hardware cpus }
11
+ }
12
+ end
13
+
14
+ def test_cli_memory_returns_memtotal
15
+ assert_output(/MemTotal/) {
16
+ SwissAdmin::CLI.start %w{ hardware memory }
17
+ }
18
+ end
19
+
20
+
21
+ end
@@ -0,0 +1,20 @@
1
+ require_relative "../test_helper"
2
+
3
+ class CLIHostTest < MiniTest::Test
4
+ def setup
5
+ @host = Socket.gethostname
6
+ end
7
+
8
+ def test_cli_host_name_returns_host_name
9
+ assert_output("#{@host}\n") {
10
+ SwissAdmin::CLI.start %w{ host name }
11
+ }
12
+ end
13
+
14
+ def test_cli_host_loadavg_returns_system_load
15
+ assert_output(/[\d\.]+\W+[\d\.]+\W+[\d\.]+\W+[\d\/]+\W+\d+/) {
16
+ SwissAdmin::CLI.start %w{ host loadavg }
17
+ }
18
+ end
19
+
20
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../test_helper"
2
+ require 'socket'
3
+
4
+
5
+ class CLINetworkTest < MiniTest::Test
6
+ def setup
7
+ @host = Socket.gethostname
8
+ @first_ipv4 = Socket.ip_address_list.detect{|intf| intf.ipv4_private?}.ip_address
9
+ end
10
+
11
+ def test_first_ipv4_returns_first_interface
12
+ assert_output("#{@first_ipv4}\n") {
13
+ SwissAdmin::CLI.start %w{ network first_ipv4 }
14
+ }
15
+ end
16
+
17
+ end
@@ -0,0 +1,28 @@
1
+ require_relative "../test_helper"
2
+
3
+
4
+ class CLIUserTest < MiniTest::Test
5
+ def setup
6
+ @current = `whoami`
7
+ @home = ENV["HOME"]
8
+ end
9
+
10
+ def test_cli_cpus_returns_cpus_count
11
+ assert_output("#{@current}") {
12
+ SwissAdmin::CLI.start %w{ user current }
13
+ }
14
+ end
15
+
16
+ def test_cli_home_returns_home_directory_of_current_user
17
+ assert_output("#{@home}\n") {
18
+ SwissAdmin::CLI.start %w{ user home }
19
+ }
20
+ end
21
+
22
+ def test_cli_active_returns_active_users
23
+ assert_output(/#{@current.chomp}/) {
24
+ SwissAdmin::CLI.start %w{ user active }
25
+ }
26
+ end
27
+
28
+ end
@@ -0,0 +1,9 @@
1
+ require_relative "test_helper"
2
+
3
+
4
+ class HardwareTest < MiniTest::Test
5
+
6
+ def test_returns_cpu_count
7
+ assert_kind_of Integer, SwissAdmin::Hardware.cpus
8
+ end
9
+ end
data/test/host_test.rb ADDED
@@ -0,0 +1,12 @@
1
+ require_relative "test_helper"
2
+
3
+ class HostTest < MiniTest::Test
4
+ def test_host_returns_host_name
5
+ assert_equal SwissAdmin::TestHelpers.hostname,
6
+ SwissAdmin::Host.name
7
+ end
8
+
9
+ def test_host_return_current_load
10
+ assert SwissAdmin::Host.loadavg
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ require_relative "test_helper"
2
+
3
+
4
+ class NetworkTest < MiniTest::Test
5
+
6
+ def test_host_returns_ip_list
7
+ assert_kind_of Array, SwissAdmin::Network.ip_addresses
8
+ end
9
+
10
+ def test_first_ipv4_returns_ip_addres
11
+ assert_equal SwissAdmin::TestHelpers.first_ipv4,
12
+ SwissAdmin::Network.first_ipv4
13
+ end
14
+ end
@@ -0,0 +1,28 @@
1
+ ENV['RACK_ENV'] = 'test'
2
+ require "socket"
3
+ require "minitest"
4
+ require "minitest/autorun"
5
+ require "minitest/pride"
6
+ require "swiss_admin"
7
+ require 'rack/test'
8
+ require File.expand_path '../../lib/swiss_admin/web/app.rb', __FILE__
9
+
10
+ module SwissAdmin
11
+ module TestHelpers
12
+ def self.hostname
13
+ Socket.gethostname
14
+ end
15
+
16
+ def self.first_ipv4
17
+ Socket.ip_address_list.detect{|intf| intf.ipv4_private?}.ip_address
18
+ end
19
+
20
+ def self.current_user
21
+ `whoami`.strip
22
+ end
23
+
24
+ def self.home
25
+ ENV["HOME"]
26
+ end
27
+ end
28
+ end
data/test/user_test.rb ADDED
@@ -0,0 +1,17 @@
1
+ require_relative "test_helper"
2
+
3
+ class UserTest < Minitest::Test
4
+ def test_current_return_logged_in_user
5
+ assert_equal SwissAdmin::TestHelpers.current_user,
6
+ SwissAdmin::User.current
7
+ end
8
+
9
+ def test_home_returns_home_directory_for_current_user
10
+ assert_equal SwissAdmin::TestHelpers.home,
11
+ SwissAdmin::User.home
12
+ end
13
+
14
+ def test_active_returns_all_logged_in_users
15
+ assert SwissAdmin::User.active
16
+ end
17
+ end
@@ -0,0 +1,70 @@
1
+ require_relative "../test_helper"
2
+
3
+ class HostInfoAPITest < MiniTest::Unit::TestCase
4
+ include Rack::Test::Methods
5
+
6
+ def app
7
+ SwissAdmin::HostInfo
8
+ end
9
+
10
+ def test_it_retruns_hardware_info
11
+ get '/api/hardware/memory'
12
+ assert last_response.ok?
13
+ assert_match /MemTotal/ , last_response.body
14
+ end
15
+
16
+ def test_it_retruns_hardware_cpus
17
+ get '/api/hardware/cpus'
18
+ assert last_response.ok?
19
+ assert_match /cpus/ , last_response.body
20
+ end
21
+
22
+
23
+ def test_it_retruns_host_name
24
+ get '/api/host/name'
25
+ assert last_response.ok?
26
+ assert_match /name/ , last_response.body
27
+ end
28
+
29
+ def test_it_retruns_host_load
30
+ get '/api/host/loadavg'
31
+ assert last_response.ok?
32
+ assert_match /loadavg/ , last_response.body
33
+ end
34
+
35
+ def test_it_retruns_not_implemented
36
+ get '/api/host/idonotexist'
37
+ assert last_response.ok?
38
+ assert_match /Plugin not implemented/ , last_response.body
39
+ end
40
+
41
+ ## Users
42
+ def test_it_retruns_current_user
43
+ get '/api/users/current'
44
+ assert last_response.ok?
45
+ assert_match /current/ , last_response.body
46
+ end
47
+ def test_it_retruns_home_for_current_users
48
+ get '/api/users/home'
49
+ assert last_response.ok?
50
+ assert_match /home/ , last_response.body
51
+ end
52
+ def test_it_retruns_active_users
53
+ get '/api/users/active'
54
+ assert last_response.ok?
55
+ assert_match /active/ , last_response.body
56
+ end
57
+
58
+ ## network
59
+ def test_it_retruns_all_ip_addresses
60
+ get '/api/network/ip_addresses'
61
+ assert last_response.ok?
62
+ assert_match /ip_addresses/ , last_response.body
63
+ end
64
+ def test_it_retruns_first_ipv4
65
+ get '/api/network/first_ipv4'
66
+ assert last_response.ok?
67
+ assert_match /first_ipv4/ , last_response.body
68
+ end
69
+
70
+ end
@@ -0,0 +1,44 @@
1
+ require_relative "../test_helper"
2
+
3
+ class HostInfoTest < MiniTest::Unit::TestCase
4
+ include Rack::Test::Methods
5
+
6
+ def app
7
+ SwissAdmin::HostInfo
8
+ end
9
+
10
+ def test_it_retruns_hardware_info
11
+ get '/host_info'
12
+ assert last_response.ok?
13
+ assert_match /Memory Total:/ , last_response.body
14
+ end
15
+
16
+ def test_it_retruns_host_name
17
+ get '/host_info'
18
+ assert last_response.ok?
19
+ assert_match /Host Name:/ , last_response.body
20
+ end
21
+
22
+ def test_it_retruns_host_load
23
+ get '/host_info'
24
+ assert last_response.ok?
25
+ assert_match /Load Average:/ , last_response.body
26
+ end
27
+
28
+ def test_it_retruns_hardware_cpus
29
+ get '/host_info'
30
+ assert last_response.ok?
31
+ assert_match /Total Cpus:/ , last_response.body
32
+ end
33
+
34
+ def test_it_retruns_network_ipaddresses
35
+ get '/host_info'
36
+ assert last_response.ok?
37
+ assert_match /IP Addresses:/ , last_response.body
38
+ end
39
+
40
+
41
+
42
+
43
+
44
+ end
metadata ADDED
@@ -0,0 +1,216 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: swiss_admin
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.1
5
+ platform: ruby
6
+ authors:
7
+ - Bradley Smith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rack-test
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: shelltastic
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.4'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sinatra
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.4'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: open4
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.3'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: thor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.18'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.18'
125
+ description: a set of helpers for any system administrator
126
+ email:
127
+ - bradleydsmith@gmail.com
128
+ executables:
129
+ - swissadmin
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".gitignore"
134
+ - Gemfile
135
+ - LICENSE.txt
136
+ - README.md
137
+ - Rakefile
138
+ - bin/swissadmin
139
+ - lib/swiss_admin.rb
140
+ - lib/swiss_admin/cli.rb
141
+ - lib/swiss_admin/cli/cli.rb
142
+ - lib/swiss_admin/cli/hardware_cli.rb
143
+ - lib/swiss_admin/cli/host_cli.rb
144
+ - lib/swiss_admin/cli/network_cli.rb
145
+ - lib/swiss_admin/cli/user_cli.rb
146
+ - lib/swiss_admin/cli/web_cli.rb
147
+ - lib/swiss_admin/hardware.rb
148
+ - lib/swiss_admin/hardware/cpus.rb
149
+ - lib/swiss_admin/hardware/memory.rb
150
+ - lib/swiss_admin/host.rb
151
+ - lib/swiss_admin/host/host.rb
152
+ - lib/swiss_admin/network.rb
153
+ - lib/swiss_admin/network/network.rb
154
+ - lib/swiss_admin/user.rb
155
+ - lib/swiss_admin/user/user.rb
156
+ - lib/swiss_admin/version.rb
157
+ - lib/swiss_admin/web/app.rb
158
+ - lib/swiss_admin/web/public/css/base.css
159
+ - lib/swiss_admin/web/public/css/layout.css
160
+ - lib/swiss_admin/web/public/css/skeleton.css
161
+ - lib/swiss_admin/web/public/css/tables.css
162
+ - lib/swiss_admin/web/public/images/apple-touch-icon-114x114.png
163
+ - lib/swiss_admin/web/public/images/apple-touch-icon-72x72.png
164
+ - lib/swiss_admin/web/public/images/apple-touch-icon.png
165
+ - lib/swiss_admin/web/public/images/favicon.ico
166
+ - lib/swiss_admin/web/public/javascript/jquery-2.1.0.min.js
167
+ - lib/swiss_admin/web/views/info.erb
168
+ - lib/swiss_admin/web/views/layout.erb
169
+ - swiss_admin.gemspec
170
+ - test/cli/cli_hardware_test.rb
171
+ - test/cli/cli_host_test.rb
172
+ - test/cli/cli_network_test.rb
173
+ - test/cli/cli_user_test.rb
174
+ - test/hardware_test.rb
175
+ - test/host_test.rb
176
+ - test/network_test.rb
177
+ - test/test_helper.rb
178
+ - test/user_test.rb
179
+ - test/web/test_api.rb
180
+ - test/web/test_host_info.rb
181
+ homepage: ''
182
+ licenses:
183
+ - MIT
184
+ metadata: {}
185
+ post_install_message:
186
+ rdoc_options: []
187
+ require_paths:
188
+ - lib
189
+ required_ruby_version: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ required_rubygems_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ requirements: []
200
+ rubyforge_project:
201
+ rubygems_version: 2.2.2
202
+ signing_key:
203
+ specification_version: 4
204
+ summary: a set of helpers for any system administrator
205
+ test_files:
206
+ - test/cli/cli_hardware_test.rb
207
+ - test/cli/cli_host_test.rb
208
+ - test/cli/cli_network_test.rb
209
+ - test/cli/cli_user_test.rb
210
+ - test/hardware_test.rb
211
+ - test/host_test.rb
212
+ - test/network_test.rb
213
+ - test/test_helper.rb
214
+ - test/user_test.rb
215
+ - test/web/test_api.rb
216
+ - test/web/test_host_info.rb