haproxy_manager 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,10 +10,10 @@ module HAProxyManager
10
10
 
11
11
  # Diables a server in the server in a backend for maintenance.
12
12
  # If backend is not specified then all the backends in which the serverid exists are disabled.
13
-
13
+ # A disabled server shows up as in Maintance mode.
14
14
  def disable(serverid, backend = nil)
15
15
  all_servers(serverid, backend).each do |item|
16
- @socket.exec "disable server #{item[0]}/#{item[1]}", &@print_response
16
+ @socket.execute "disable server #{item[0]}/#{item[1]}", &@print_response
17
17
  end
18
18
  end
19
19
 
@@ -21,7 +21,7 @@ module HAProxyManager
21
21
  # If backend is not specified then all the backends in which the serverid exists are enabled.
22
22
  def enable(serverid, backend = nil)
23
23
  all_servers(serverid, backend).each do |item|
24
- @socket.exec "enable server #{item[0]}/#{item[1]}", &@print_response
24
+ @socket.execute "enable server #{item[0]}/#{item[1]}", &@print_response
25
25
  end
26
26
  end
27
27
 
@@ -29,9 +29,21 @@ module HAProxyManager
29
29
  @backends.keys
30
30
  end
31
31
 
32
+ def info
33
+ @socket.execute( "show info").inject({}){|hash, item| x = item.split(":"); hash.merge(x[0].strip => x[1].strip)}
34
+ end
35
+
32
36
  def servers(backend = nil)
33
37
  backend.nil? ? @backends.values.flatten : @backends[backend]
34
38
  end
39
+
40
+ # resets Haproxy counters. If no option is specified backend and frontend counters are cleared, but
41
+ # cumulative counters are not cleared. The cumulative counters can be cleared by passing the option of
42
+ # all to the method, in that case all the counters are cleared. This is similar to a restart.
43
+ # This is useful to reset stats after for example an incident.
44
+ def reset_counters(option = "")
45
+ @socket.execute "clear counters {option}", &@print_response
46
+ end
35
47
 
36
48
  private
37
49
  def all_servers(serverid, backend)
@@ -1,3 +1,3 @@
1
1
  module HAProxyManager
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -9,9 +9,10 @@ module HAProxyManager
9
9
  "foo-https-farm,preprod-app,0,0,0,3,60,6219,2577996,71804141,,0,,1,30,3,0,UP,12,1,0,559,137,45394,255774,,1,2,1,,1948,,2,0,,2,L7OK,200,109,0,5912,181,11,29,0,0,,,,501,0,",
10
10
  "foo-https-farm,preprod-bg,0,0,0,0,30,0,0,0,,0,,0,0,0,0,DOWN,5,1,0,4,4,2453494,4518368,,1,2,2,,0,,2,0,,0,L4CON,,0,0,0,0,0,0,0,0,,,,0,0,",
11
11
  "foo-https-farm,preprod-test,0,0,0,0,30,0,0,0,,0,,0,0,0,0,DOWN,5,1,0,0,1,5017532,5017532,,1,2,3,,0,,2,0,,0,L4CON,,0,0,0,0,0,0,0,0,,,,0,0,"]
12
+ @info_response = ["Name: HAProxy", "Version: 1.5-dev11", "Release_date: 2012/06/04", "Nbproc: 1", "Process_num: 1", "Pid: 4084", "Uptime: 58d 3h50m53s", "Uptime_sec: 5025053", "Memmax_MB: 0", "Ulimit-n: 40029", "Maxsock: 40029", "Maxconn: 20000", "Hard_maxconn: 20000", "Maxpipes: 0", "CurrConns: 0", "PipesUsed: 0", "PipesFree: 0", "ConnRate: 0", "ConnRateLimit: 0", "MaxConnRate: 69", "Tasks: 10", "Run_queue: 1", "Idle_pct: 100", "node: some machine on ec3", "description: Our awesome load balancer"]
12
13
  end
13
14
  before(:each) do
14
- HAPSocket.any_instance.expects(:execute).returns(@stat_response)
15
+ HAPSocket.any_instance.expects(:execute).once.returns(@stat_response)
15
16
  @instance = Instance.new("foo")
16
17
  end
17
18
 
@@ -32,28 +33,39 @@ module HAProxyManager
32
33
  end
33
34
  end
34
35
 
35
- describe "enables servers" do
36
+ describe "enables/disables servers" do
36
37
  it "enables a server" do
37
- HAPSocket.any_instance.expects(:exec).with('enable server foo-farm/preprod-bg')
38
+ HAPSocket.any_instance.expects(:execute).with('enable server foo-farm/preprod-bg')
38
39
  @instance.enable("preprod-bg", "foo-farm")
39
40
  end
40
41
 
41
42
  it "enables a all servers in multiple backends" do
42
- HAPSocket.any_instance.expects(:exec).with('enable server foo-farm/preprod-bg')
43
- HAPSocket.any_instance.expects(:exec).with('enable server foo-https-farm/preprod-bg')
43
+ HAPSocket.any_instance.expects(:execute).with('enable server foo-farm/preprod-bg')
44
+ HAPSocket.any_instance.expects(:execute).with('enable server foo-https-farm/preprod-bg')
44
45
  @instance.enable("preprod-bg")
45
46
  end
46
47
 
47
48
  it "disables a server" do
48
- HAPSocket.any_instance.expects(:exec).with('disable server foo-farm/preprod-bg')
49
+ HAPSocket.any_instance.expects(:execute).with('disable server foo-farm/preprod-bg')
49
50
  @instance.disable("preprod-bg", "foo-farm")
50
51
  end
51
52
 
52
53
  it "disables a server in all backends" do
53
- HAPSocket.any_instance.expects(:exec).with('disable server foo-farm/preprod-bg')
54
- HAPSocket.any_instance.expects(:exec).with('disable server foo-https-farm/preprod-bg')
54
+ HAPSocket.any_instance.expects(:execute).with('disable server foo-farm/preprod-bg')
55
+ HAPSocket.any_instance.expects(:execute).with('disable server foo-https-farm/preprod-bg')
55
56
  @instance.disable("preprod-bg")
56
57
  end
57
58
  end
59
+
60
+ describe "info about haproxy" do
61
+ it "has description/version and uptime" do
62
+ HAPSocket.any_instance.expects(:execute).with("show info").returns(@info_response)
63
+
64
+ info = @instance.info
65
+ info["description"].should == 'Our awesome load balancer'
66
+ info["Version"].should == '1.5-dev11'
67
+ info["Uptime"].should == '58d 3h50m53s'
68
+ end
69
+ end
58
70
  end
59
71
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haproxy_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -124,7 +124,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
124
  version: '0'
125
125
  segments:
126
126
  - 0
127
- hash: 1069670280984611263
127
+ hash: -4440927357192594363
128
128
  required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  version: '0'
134
134
  segments:
135
135
  - 0
136
- hash: 1069670280984611263
136
+ hash: -4440927357192594363
137
137
  requirements: []
138
138
  rubyforge_project: haproxy_manager
139
139
  rubygems_version: 1.8.24