cloudscopes 0.10.4 → 0.11.0
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.
- checksums.yaml +4 -4
- data/lib/cloudscopes/process.rb +47 -2
- data/lib/cloudscopes/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d91d06a8ad7b36f6f1b35fef4e44d03cabd10356
|
4
|
+
data.tar.gz: c8ddddd9811a23b70c17dee5be4cd2f0607ef5c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba5c2a882713f38195dd617aa8cb8e75f17c7ee4ff3e91bdd5850b45fbe4035ee77e79c0b2d890722063a72e5449a4b1a96b0a75e7ff4d3bb6e229199facb636
|
7
|
+
data.tar.gz: f3760d2d4ed8301c9c40bafedcd3ae2bca3806e35e8e70b38f1f97e22cee10f766480a6084b44bb9767445fb4b1ecd09e0117f0fb74ab6968be9bd2012fa5266
|
data/lib/cloudscopes/process.rb
CHANGED
@@ -14,13 +14,25 @@ module Cloudscopes
|
|
14
14
|
"/proc/#{@id}/#{field}"
|
15
15
|
end
|
16
16
|
|
17
|
+
def method_missing(name, *args)
|
18
|
+
raise ArgumentError.new("wrong number of arguments (#{args.length} for 0)") unless args.length == 0
|
19
|
+
begin
|
20
|
+
File.read(procpath(name.to_s))
|
21
|
+
rescue Errno::ENOENT => e # ignore kernel threads
|
22
|
+
''
|
23
|
+
rescue SystemCallError => e # report and ignore
|
24
|
+
$stderr.puts "Error accessing process #{@id}: #{e.class}:#{e.message}"
|
25
|
+
''
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
17
29
|
def exe
|
18
30
|
begin
|
19
31
|
File.readlink(procpath('exe'))
|
20
32
|
rescue Errno::ENOENT => e # ignore kernel threads
|
21
33
|
''
|
22
34
|
rescue SystemCallError => e # report and ignore
|
23
|
-
$stderr.puts "Error accessing process #{@id}: #{e.message}"
|
35
|
+
$stderr.puts "Error accessing process #{@id}: #{e.class}:#{e.message}"
|
24
36
|
''
|
25
37
|
end
|
26
38
|
end
|
@@ -40,10 +52,43 @@ module Cloudscopes
|
|
40
52
|
def user
|
41
53
|
Etc.getpwuid(uid || 0).name
|
42
54
|
end
|
55
|
+
|
56
|
+
def mem_usage
|
57
|
+
# lots of magic follow, peruse at your own risk
|
58
|
+
maps.strip.split("\n").collect do |l|
|
59
|
+
l.split(/\s+/)
|
60
|
+
end.select do |r|
|
61
|
+
r[4].to_i == 0 && r[1] !~ /s/
|
62
|
+
end.collect do |r|
|
63
|
+
b,e = r[0].split(/-/,2).collect{ |a| a.to_i(16) }
|
64
|
+
r[0] = e - b
|
65
|
+
r
|
66
|
+
end.inject(0) do |s,r|
|
67
|
+
s += r[0]
|
68
|
+
end
|
69
|
+
end
|
43
70
|
end
|
44
71
|
|
45
72
|
def list
|
46
|
-
Dir["/proc/[0-9]*[0-9]"].collect{|dir| SystemProcess.new(File.basename(dir).to_i) }
|
73
|
+
list = Dir["/proc/[0-9]*[0-9]"].collect{|dir| SystemProcess.new(File.basename(dir).to_i) }
|
74
|
+
list.define_singleton_method(:method_missing) do |name, *args|
|
75
|
+
case name.to_s
|
76
|
+
when /^by_(.*)/
|
77
|
+
field = $1.to_sym
|
78
|
+
raise ArgumentError.new("wrong number of arguments (#{args.length} for 1)") unless args.length == 1
|
79
|
+
select do |ps|
|
80
|
+
case ps.send(field)
|
81
|
+
when args.first
|
82
|
+
true
|
83
|
+
else
|
84
|
+
false
|
85
|
+
end
|
86
|
+
end
|
87
|
+
else
|
88
|
+
raise NoMethodError.new("No such method #{name}",name)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
list
|
47
92
|
end
|
48
93
|
|
49
94
|
end
|
data/lib/cloudscopes/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudscopes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oded Arbel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.4.6
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: Ruby gem to report system statistics to web based monitoring services such
|