cloudscopes 0.10.4 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2316afab7dfbc4350efd1390fc48fb1b89ab98a
4
- data.tar.gz: b7213b0759fcccef21e0a2dacdb3df8c80fd83eb
3
+ metadata.gz: d91d06a8ad7b36f6f1b35fef4e44d03cabd10356
4
+ data.tar.gz: c8ddddd9811a23b70c17dee5be4cd2f0607ef5c3
5
5
  SHA512:
6
- metadata.gz: a4b6d66eb2eeb1e1ad763bf93486bc0d9583eb2d214227cf05807745597071a29473db55e0a3f3ab01f701e2608579461b5608011dbd2e58560ab96ed6f94a34
7
- data.tar.gz: 7fe30ef80fe82ef400bb109b1e6d2032996933508dc9864b997e2b6b507683c5eea6e782cfdf648207c842e355c7a249dd448f0e7303b3c69e008d0e2bb0deb2
6
+ metadata.gz: ba5c2a882713f38195dd617aa8cb8e75f17c7ee4ff3e91bdd5850b45fbe4035ee77e79c0b2d890722063a72e5449a4b1a96b0a75e7ff4d3bb6e229199facb636
7
+ data.tar.gz: f3760d2d4ed8301c9c40bafedcd3ae2bca3806e35e8e70b38f1f97e22cee10f766480a6084b44bb9767445fb4b1ecd09e0117f0fb74ab6968be9bd2012fa5266
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Cloudscopes
2
- VERSION = "0.10.4"
2
+ VERSION = "0.11.0"
3
3
  end
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.10.4
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-10-26 00:00:00.000000000 Z
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.2.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