kcluster 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/kcluster +59 -49
  2. metadata +4 -4
@@ -22,40 +22,59 @@ def verbose(s)
22
22
  puts s if $options[:verbose]
23
23
  end
24
24
 
25
- def fetch_stats(host, port, data)
26
- verbose "--- Fetching stats from #{host}:#{port}"
27
- sock = TCPSocket.open(host, port)
28
- sock.puts("stats")
29
- done = false
30
- while !done && line = sock.gets.chomp
31
- if (line == 'END') then
32
- done = true
33
- elsif line =~ /STAT queue_([\w\+\-]+) (\d+)/
34
- key = $1
35
- value = $2.to_i
36
- (stat, queue_name) = case key
37
- when /([\w\+\-]+)_total_items/ then [:total_items, $1]
38
- when /([\w\+\-]+)_expired_items/ then [:expired_items, $1]
39
- when /([\w\+\-]+)_mem_items/ then [:mem_items, $1]
40
- when /([\w\+\-]+)_items/ then [:items, $1]
41
- when /([\w\+\-]+)_mem_bytes/ then [:mem_bytes, $1]
42
- when /([\w\+\-]+)_bytes/ then [:bytes, $1]
43
- when /([\w\+\-]+)_age/ then [:age, $1]
44
- end
25
+ def status(s)
26
+ print s
27
+ STDOUT.flush
28
+ end
45
29
 
46
- if (queue_name)
47
- queue_name = queue_name.split('+', 2).first if $options[:rollup_fanouts]
30
+ def with_server(hostname, port, &block)
31
+ begin
32
+ sock = TCPSocket.open(hostname, port)
33
+ rescue
34
+ puts "WARNING: Unable to connect to #{hostname}:#{port}"
35
+ return
36
+ end
37
+ begin
38
+ yield sock
39
+ ensure
40
+ sock.close
41
+ end
42
+ end
48
43
 
49
- if (stat == :age)
50
- data[:min_age][queue_name] = value if value < data[:min_age][queue_name]
51
- data[:max_age][queue_name] = value if value > data[:max_age][queue_name]
52
- else
53
- data[stat][queue_name] += value
44
+ def fetch_stats(hostname, port, data)
45
+ verbose "--- Fetching stats from #{hostname}:#{port}"
46
+ with_server(hostname, port) do |sock|
47
+ sock.puts("stats")
48
+ done = false
49
+ while !done && line = sock.gets.chomp
50
+ if (line == 'END') then
51
+ done = true
52
+ elsif line =~ /STAT queue_([\w\+\-]+) (\d+)/
53
+ key = $1
54
+ value = $2.to_i
55
+ (stat, queue_name) = case key
56
+ when /([\w\+\-]+)_total_items/ then [:total_items, $1]
57
+ when /([\w\+\-]+)_expired_items/ then [:expired_items, $1]
58
+ when /([\w\+\-]+)_mem_items/ then [:mem_items, $1]
59
+ when /([\w\+\-]+)_items/ then [:items, $1]
60
+ when /([\w\+\-]+)_mem_bytes/ then [:mem_bytes, $1]
61
+ when /([\w\+\-]+)_bytes/ then [:bytes, $1]
62
+ when /([\w\+\-]+)_age/ then [:age, $1]
63
+ end
64
+
65
+ if (queue_name)
66
+ queue_name = queue_name.split('+', 2).first if $options[:rollup_fanouts]
67
+
68
+ if (stat == :age)
69
+ data[:min_age][queue_name] = value if value < data[:min_age][queue_name]
70
+ data[:max_age][queue_name] = value if value > data[:max_age][queue_name]
71
+ else
72
+ data[stat][queue_name] += value
73
+ end
54
74
  end
55
75
  end
56
76
  end
57
77
  end
58
- sock.close
59
78
  end
60
79
 
61
80
  def fetch_all
@@ -65,11 +84,7 @@ def fetch_all
65
84
  end
66
85
  end
67
86
  $options[:server_list].each do |server|
68
- begin
69
- fetch_stats(server, $options[:port], data)
70
- rescue => e
71
- puts "Could not connect to host #{server}: #{e}"
72
- end
87
+ fetch_stats(server, $options[:port], data)
73
88
  end
74
89
  data
75
90
  end
@@ -94,28 +109,23 @@ def report_all(data, keys)
94
109
  puts ""
95
110
  end
96
111
 
97
- def delete_all(queue_name)
112
+ def broadcast(command, queue_name, verb)
98
113
  $options[:server_list].each do |server|
99
- print "--- Deleting queue #{queue_name} from #{server}:#{$options[:port]} ... "
100
- STDOUT.flush
101
- sock = TCPSocket.open(server, $options[:port])
102
- sock.puts("delete " + queue_name)
103
- puts sock.readline.chomp
104
- sock.close
114
+ status "--- #{verb} queue #{queue_name} from #{server}:#{$options[:port]} ... "
115
+ with_server(server, $options[:port]) do |sock|
116
+ sock.puts("#{command} " + queue_name)
117
+ puts sock.readline.chomp
118
+ end
105
119
  end
106
120
  puts "Done."
107
121
  end
108
122
 
123
+ def delete_all(queue_name)
124
+ broadcast("delete", queue_name, "Deleting")
125
+ end
126
+
109
127
  def flush_all(queue_name)
110
- $options[:server_list].each do |server|
111
- print "--- Flushing queue #{queue_name} from #{server}:#{$options[:port]} ... "
112
- STDOUT.flush
113
- sock = TCPSocket.open(server, $options[:port])
114
- sock.puts("flush " + queue_name)
115
- puts sock.readline.chomp
116
- sock.close
117
- end
118
- puts "Done."
128
+ broadcast("flush", queue_name, "Flushing")
119
129
  end
120
130
 
121
131
  def keep_unchanged_data(last, current)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kcluster
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 0
10
- version: 1.1.0
9
+ - 1
10
+ version: 1.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Robey Pointer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-03-02 00:00:00 Z
18
+ date: 2012-03-16 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json