datacenter 0.2.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 639f19a32af94539eff49e4d60bb416ac5e5366b
4
- data.tar.gz: f64487b04b2433088d96a99e56aedba41d0e5c33
3
+ metadata.gz: 0dd32253b277b657b34434c9ce9eef0eae0f5b89
4
+ data.tar.gz: eea49f8e1a6d5efcfe8d0d8692972e51ea81057d
5
5
  SHA512:
6
- metadata.gz: b9e64261f9c76232c11b0fa84d2222dad389f1211d3d0bdca52299b57ef77118f3db648beb332d4b6b2059a33dca5c9d06028dfbe1ac648a68e84f2798263c88
7
- data.tar.gz: 15eeae879c23dbfdd764e59ad7f42d8f5c26d859ad76f7ceced266a32f355fa6f43bfd754f50bfcad8b3d11a31b5598d306f2906154168f1fa1b31f3eea4da3e
6
+ metadata.gz: 3091059ea87e63c6f70f0c2048dcf2d5265d8e730bb56a142b2e5033b0756490fabefe1e5c3e7bf92dd1e730d463a388498085a8e421ce20bae01816b81a7489
7
+ data.tar.gz: 785dce16665ea7b28970025c8ffa99ef1290d5bd7f073b2c55ffd596a41e3fabaefd9eb52713d86a3f7b20f874d98464d166017c175192c7c2f8d41cfca9d5d4
@@ -7,30 +7,28 @@ module Datacenter
7
7
  end
8
8
 
9
9
  def fetch(key, &block)
10
- set key, &block if !key?(key) || expired?(key)
10
+ set key, block.call if !data.key?(key) || expired?(key)
11
11
  get key
12
12
  end
13
13
 
14
14
  private
15
15
 
16
+ attr_reader :data, :expiration_time
17
+
16
18
  def get(key)
17
- @data[key][:value]
19
+ data[key][:value]
18
20
  end
19
21
 
20
- def set(key, &block)
21
- @data[key] = {
22
- value: block.call,
22
+ def set(key, value)
23
+ data[key] = {
24
+ value: value,
23
25
  fetched_at: Time.now
24
26
  }
25
27
  end
26
28
 
27
- def key?(key)
28
- @data.key? key
29
- end
30
-
31
29
  def expired?(key)
32
- return false unless @expiration_time
33
- Time.now >= @data[key][:fetched_at] + @expiration_time
30
+ return false unless expiration_time
31
+ Time.now >= data[key][:fetched_at] + expiration_time
34
32
  end
35
33
 
36
34
  end
@@ -13,14 +13,12 @@ module Datacenter
13
13
  :mem_usage
14
14
  ]
15
15
 
16
- EXPIRATION_TIME = 2
17
-
18
16
  attr_reader :pid
19
17
 
20
18
  def initialize(pid, shell=nil)
21
19
  @pid = pid
22
20
  @shell = shell || Shell::Local.new
23
- @cache = Cache.new EXPIRATION_TIME
21
+ @cache = Cache.new Datacenter.process_cache_expiration
24
22
  end
25
23
 
26
24
  ATTRIBUTES.each do |attribute|
@@ -45,9 +43,9 @@ module Datacenter
45
43
 
46
44
  def info
47
45
  @cache.fetch(:info) do
48
- ps = shell.run('ps aux').scan(/.*#{pid}.*/)[0].split
46
+ status = Hash[proc_file(:status).split("\n").map{ |s| s.split(':').map(&:strip) }]
47
+ ps = shell.run("ps -p #{pid} -o user,pid,pcpu,%mem,vsize,rss,stat,command").split("\n")[1].split
49
48
  Hash.new.tap do |info|
50
- status = Hash[proc_file(:status).split("\n").map{ |s| s.split(':').map(&:strip) }]
51
49
  info[:name] = status['Name']
52
50
  info[:user] = ps[0]
53
51
  info[:pid] = ps[1]
@@ -55,8 +53,8 @@ module Datacenter
55
53
  info[:mem_usage] = ps[3].to_f
56
54
  info[:virtual_memory] = ps[4].to_i / 1024.0
57
55
  info[:memory] = ps[5].to_i / 1024.0
58
- info[:status] = ps[7]
59
- info[:command] = ps[10..-1].reduce { |acum,e| "#{acum} #{e}" }
56
+ info[:status] = ps[6]
57
+ info[:command] = ps[7..-1].reduce { |acum,e| "#{acum} #{e}" }
60
58
  end
61
59
  end
62
60
  end
@@ -3,6 +3,7 @@ module Datacenter
3
3
 
4
4
  class Local
5
5
  def run(command)
6
+ Datacenter.logger.debug(self.class) { command }
6
7
  if RUBY_ENGINE == 'jruby'
7
8
  run_system command
8
9
  else
@@ -42,6 +43,7 @@ module Datacenter
42
43
  end
43
44
 
44
45
  def run(command)
46
+ Datacenter.logger.debug(self.class) { command }
45
47
  if @session
46
48
  @session.exec!(command).strip
47
49
  else
@@ -50,7 +52,7 @@ module Datacenter
50
52
  end
51
53
 
52
54
  def open
53
- @session = Net::SSH.start *options unless @session
55
+ @session ||= Net::SSH.start *options
54
56
  end
55
57
 
56
58
  def close
@@ -1,3 +1,3 @@
1
1
  module Datacenter
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/lib/datacenter.rb CHANGED
@@ -6,6 +6,7 @@ require 'logger'
6
6
  module Datacenter
7
7
  extend ClassConfig
8
8
  attr_config :logger, Logger.new('/dev/null')
9
+ attr_config :process_cache_expiration, 2
9
10
  end
10
11
 
11
12
  Dir.glob(File.expand_path('datacenter/*.rb', File.dirname(__FILE__))).sort.each { |f| require f }
data/spec/commands.yml CHANGED
@@ -2,25 +2,23 @@
2
2
 
3
3
  "ps -p -22803 | grep -22803": ""
4
4
 
5
- "kill -s QUIT 22803": 'quit success'
5
+ "kill -s QUIT 22803": "quit success"
6
6
 
7
- "kill -s KILL 22803": 'kill success'
7
+ "kill -s KILL 22803": "kill success"
8
8
 
9
- "uname -i": x86_64
9
+ "uname -i": "x86_64"
10
10
 
11
- "uname -r": 3.5.0-49-generic
11
+ "uname -r": "3.5.0-49-generic"
12
12
 
13
- "uname -o": GNU/Linux
13
+ "uname -o": "GNU/Linux"
14
14
 
15
15
  "lsb_release -i": "Distributor ID: Ubuntu"
16
16
 
17
17
  "lsb_release -r": "Release: 12.04"
18
18
 
19
- hostname: |
20
- matias
19
+ "hostname": "matias"
21
20
 
22
- nproc: |
23
- 2
21
+ "nproc": "2"
24
22
 
25
23
  "df -lT": |
26
24
  Filesystem Type 1K-blocks Used Available Use% Mounted on
@@ -31,7 +29,7 @@ nproc: |
31
29
  none tmpfs 5120 0 5120 0% /run/lock
32
30
  none tmpfs 2019816 512 2019304 1% /run/shm
33
31
 
34
- ifconfig: |
32
+ "ifconfig": |
35
33
  eth4 Link encap:Ethernet HWaddr e0:cb:4e:c2:99:9d
36
34
  inet addr:192.168.50.127 Bcast:192.168.50.255 Mask:255.255.255.0
37
35
  inet6 addr: fe80::e2cb:4eff:fec2:999d/64 Scope:Link
@@ -41,7 +39,7 @@ ifconfig: |
41
39
  collisions:0 txqueuelen:1000
42
40
  RX bytes:110494415 (110.4 MB) TX bytes:21453491 (21.4 MB)
43
41
 
44
- lo Link encap:Local Loopback
42
+ lo Link encap:Local Loopback
45
43
  inet addr:127.0.0.1 Mask:255.0.0.0
46
44
  inet6 addr: ::1/128 Scope:Host
47
45
  UP LOOPBACK RUNNING MTU:16436 Metric:1
@@ -82,6 +80,15 @@ ifconfig: |
82
80
  siblings : 2
83
81
  core id : 0
84
82
 
83
+ "ps aux": |
84
+ USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
85
+ root 1 0.0 0.0 24548 2460 ? Ss May15 0:00 /sbin/init
86
+ root 2 0.0 0.0 0 0 ? S May15 0:00 [kthreadd]
87
+ root 3 0.0 0.0 0 0 ? S May15 0:06 [ksoftirqd/0]
88
+ root 6 0.0 0.0 0 0 ? S May15 0:00 [migration/0]
89
+ root 7 0.0 0.0 0 0 ? S May15 0:00 [watchdog/0]
90
+ root 8 0.0 0.0 0 0 ? S May15 0:00 [migration/1]
91
+ matias 22803 11.9 0.8 513268 33792 ? Sl 09:43 52:47 gnome-system-monitor
85
92
 
86
93
  "ps aux --sort -rss | head -n 11": |
87
94
  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
@@ -117,19 +124,13 @@ ifconfig: |
117
124
  matias 23542 0.0 0.2 34216 11408 pts/0 Ss 10:24 0:01 -bash
118
125
  matias 22903 0.0 0.2 34164 11360 pts/1 Ss 09:46 0:00 -bash
119
126
 
120
- "ps aux": |
121
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
122
- root 1 0.0 0.0 24548 2460 ? Ss May15 0:00 /sbin/init
123
- root 2 0.0 0.0 0 0 ? S May15 0:00 [kthreadd]
124
- root 3 0.0 0.0 0 0 ? S May15 0:06 [ksoftirqd/0]
125
- root 6 0.0 0.0 0 0 ? S May15 0:00 [migration/0]
126
- root 7 0.0 0.0 0 0 ? S May15 0:00 [watchdog/0]
127
- root 8 0.0 0.0 0 0 ? S May15 0:00 [migration/1]
128
- matias 22803 11.9 0.8 513268 33792 ? Sl 09:43 52:47 gnome-system-monitor
129
-
130
- ps aux | grep "gnome-system-monitor" | grep -v grep: |
127
+ "ps aux | grep \"gnome-system-monitor\" | grep -v grep": |
131
128
  matias 22803 7.2 0.8 597980 34948 ? Sl May21 136:34 gnome-system-monitor
132
129
 
130
+ "ps -p 22803 -o user,pid,pcpu,%mem,vsize,rss,stat,command": |
131
+ USER PID %CPU %MEM VSZ RSS STAT COMMAND
132
+ matias 22803 11.9 0.8 513268 33792 Sl gnome-system-monitor
133
+
133
134
  "cat /proc/22803/status": |
134
135
  Name: gnome-system-mo
135
136
  State: S (sleeping)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datacenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-22 00:00:00.000000000 Z
11
+ date: 2015-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh
@@ -174,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
174
  version: '0'
175
175
  requirements: []
176
176
  rubyforge_project:
177
- rubygems_version: 2.4.3
177
+ rubygems_version: 2.4.7
178
178
  signing_key:
179
179
  specification_version: 4
180
180
  summary: Manage and monitor servers and processes