haproxyctl 1.1.0 → 1.2.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.
data/.rubocop.yml ADDED
@@ -0,0 +1 @@
1
+ inherit_from: rubocop-todo.yml
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (C) 2010-2012
1
+ Copyright (C) 2010-2013
2
2
  author: Carlo Flores <github@petalphile.com>
3
3
  contributors: Scott Gonyea, John A. Barbuto, Ben Lovett,
4
4
  Till Klampaeckel, Erik Osterman, Martin Hald, DeniedBoarding,
data/README.md CHANGED
@@ -11,17 +11,20 @@ This is a simple wrapper to make life with HAProxy a little more convenient.
11
11
 
12
12
  [Here](http://scale10x.biggiantnerds.com) is a presentation about it.
13
13
 
14
+
14
15
  Installation
15
16
  ------------
16
17
 
17
18
  On most UNIX, assuming HAProxy is in the $PATH:
18
-
19
- git clone git@github.com:flores/haproxyctl.git
20
- ln -s haproxyctl/haproxyctl /etc/init.d/haproxyctl
19
+ <pre>
20
+ git clone git@github.com:flores/haproxyctl.git
21
+ ln -s haproxyctl/haproxyctl /etc/init.d/haproxyctl
22
+ </pre>
21
23
 
22
24
  For chkconfig/RedHat/Centos, add:
23
-
24
- chkconfig --add haproxyctl
25
+ <pre>
26
+ chkconfig --add haproxyctl
27
+ </pre>
25
28
 
26
29
  There is also an HAProxy source installation script. This installs not only the steps above but latest HAProxy sources!
27
30
 
@@ -344,6 +347,14 @@ Contributors
344
347
  - [deniedboarding](https://github.com/deniedboarding)
345
348
  - [Aaron Blew aka `blewa`](https://github.com/blewa)
346
349
  - [Nick Griffiths aka `nicobrevin`](https://github.com/nicobrevin)
350
+ - [Florian Holzhauer aka `fh`](https://github.com/fh)
351
+
352
+
353
+ Non-current HAProxy versions
354
+ ------------
355
+ Be aware that HAProxy below current stable (1.4) does not support many of the
356
+ options of haproxyctl.
357
+
347
358
 
348
359
  License
349
360
  -----------------
data/bin/haproxyctl CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  require 'pathname'
15
15
  lib = File.join(File.dirname(Pathname.new(__FILE__).realpath), '../lib')
16
- $:.unshift lib unless $:.include?(lib)
16
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
17
17
 
18
18
  require 'haproxyctl'
19
19
  include HAProxyCTL
@@ -23,70 +23,70 @@ argument = ARGV.join(' ')
23
23
  unless has_exec?
24
24
  puts usage if argument =~ /help/ || ARGV.length < 1
25
25
 
26
- raise "Cannot find haproxy executable. Please ensure it is in your $PATH, or set $HAPROXY_BIN environment variable."
26
+ fail 'Cannot find haproxy executable. Please ensure it is in your $PATH, or set $HAPROXY_BIN environment variable.'
27
27
  end
28
28
 
29
29
  display_usage! if argument =~ /help/ || ARGV.length < 1
30
30
 
31
31
  begin
32
32
  case argument
33
- when "start"
33
+ when 'start'
34
34
  if pidof
35
- raise("haproxy is already running on pid #{pidof}!")
35
+ fail("haproxy is already running on pid #{pidof}!")
36
36
  else
37
37
  start
38
38
  end
39
- when "stop"
39
+ when 'stop'
40
40
  stop(check_running)
41
- when "restart"
41
+ when 'restart'
42
42
  if pidof
43
43
  stop(pidof)
44
- stillpidof = check_running()
44
+ stillpidof = check_running
45
45
  while stillpidof == pidof
46
46
  puts "still haven't killed old pid. waiting 3s for existing connections to die... (ctrl+c to stop)"
47
47
  sleep 3
48
- stillpidof = check_running() || 0
48
+ stillpidof = check_running || 0
49
49
  end
50
- start()
50
+ start
51
51
  else
52
- puts "haproxy was not running. starting..."
53
- start()
52
+ puts 'haproxy was not running. starting...'
53
+ start
54
54
  end
55
- when "reload"
56
- if ( pidof )
55
+ when 'reload'
56
+ if pidof
57
57
  reload(pidof)
58
58
  else
59
- puts "haproxy not running. starting..."
60
- start()
59
+ puts 'haproxy not running. starting...'
60
+ start
61
61
  end
62
- when "status"
63
- if ( pidof )
62
+ when 'status'
63
+ if pidof
64
64
  puts "haproxy is running on pid #{pidof}.\nthese ports are used and guys are connected:"
65
65
  system("lsof -ln -i |awk \'$2 ~ /#{pidof}/ {print $8\" \"$9}\'")
66
66
  else
67
- puts "haproxy is not running"
67
+ puts 'haproxy is not running'
68
68
  end
69
- when "configcheck"
69
+ when 'configcheck'
70
70
  puts `#{exec} -c -f #{config_path}`
71
- when "nagios"
72
- if ( pidof )
73
- puts "OK"
71
+ when 'nagios'
72
+ if pidof
73
+ puts 'OK'
74
74
  exit
75
75
  else
76
- puts "CRITICAL: HAProxy is not running!"
76
+ puts 'CRITICAL: HAProxy is not running!'
77
77
  exit(2)
78
78
  end
79
- when "cloudkick"
80
- if ( pidof )
81
- puts "status ok haproxy is running"
79
+ when 'cloudkick'
80
+ if pidof
81
+ puts 'status ok haproxy is running'
82
82
  conn = `lsof -ln -i |grep -c #{pidof}`.chomp.to_i
83
83
  # removes the listener
84
84
  conn = conn - 1
85
85
  puts "metric connections int #{conn}"
86
- status=unixsock("show stat")
86
+ status = unixsock('show stat')
87
87
  status.each do |line|
88
88
  line = line.split(',')
89
- if (line[0] !~ /^#/)
89
+ if line[0] !~ /^#/
90
90
  host = "#{line[0]}_#{line[1]}"
91
91
  puts "metric #{host}_request_rate int #{line[47]}" if line[47].to_i > 0
92
92
  puts "metric #{host}_total_requests gauge #{line[49]}" if line[49].to_i > 0
@@ -95,59 +95,59 @@ begin
95
95
  end
96
96
  end
97
97
  else
98
- puts "status err haproxy is not running!"
98
+ puts 'status err haproxy is not running!'
99
99
  end
100
- when "show health"
101
- status=unixsock("show stat")
100
+ when 'show health'
101
+ status = unixsock('show stat')
102
102
  status.each do |line|
103
103
  data = line.split(',')
104
104
  printf "%-30s %-30s %-7s %3s\n", data[0], data[1], data[17], data[18]
105
105
  end
106
106
  when /show backend(s?)/
107
- status=unixsock("show stat").grep(/BACKEND/)
107
+ status = unixsock('show stat').grep(/BACKEND/)
108
108
  status.each do |line|
109
109
  data = line.split(',')
110
110
  printf "%-30s %-30s %-7s %3s\n", data[0], data[1], data[17], data[18]
111
111
  end
112
112
  when /disable all EXCEPT (.+)/
113
- servername=$1
114
- status=unixsock("show stat")
113
+ servername = Regexp.last_match[ 1]
114
+ status = unixsock('show stat')
115
115
  backend = status.grep(/#{servername}/)
116
116
  backend.each do |line|
117
117
  backend_group = line.split(',')
118
118
  status.each do |pool|
119
119
  data = pool.split(',')
120
- if ( (data[0] == backend_group[0]) && ( data[1] !~ /#{servername}|BACKEND|FRONTEND/ ) && ( data[17] == 'UP' ) )
120
+ if (data[0] == backend_group[0]) && ( data[1] !~ /#{servername}|BACKEND|FRONTEND/) && ( data[17] == 'UP')
121
121
  unixsock("disable server #{data[0]}/#{data[1]}")
122
122
  end
123
123
  end
124
124
  end
125
125
  when /disable all (.+)/
126
- servername=$1
127
- status=unixsock("show stat")
126
+ servername = Regexp.last_match[ 1]
127
+ status = unixsock('show stat')
128
128
  status.each do |line|
129
129
  data = line.split(',')
130
- if ( ( data[1] == servername ) && ( data[17] == 'UP' ) )
130
+ if ( data[1] == servername) && ( data[17] == 'UP')
131
131
  unixsock("disable server #{data[0]}/#{servername}")
132
132
  end
133
133
  end
134
134
  when /enable all EXCEPT (.+)/
135
- servername=$1
136
- status=unixsock("show stat")
135
+ servername = Regexp.last_match[ 1]
136
+ status = unixsock('show stat')
137
137
  backend = status.grep(/#{servername}/)
138
138
  backend.each do |line|
139
139
  backend_group = line.split(',')
140
140
  status.each do |pool|
141
141
  data = pool.split(',')
142
- if ( (data[0] == backend_group[0]) && ( data[1] !~ /#{servername}|BACKEND|FRONTEND/ ) && ( data[17] =~ /Down|MAINT/i ) )
142
+ if (data[0] == backend_group[0]) && ( data[1] !~ /#{servername}|BACKEND|FRONTEND/) && ( data[17] =~ /Down|MAINT/i)
143
143
  unixsock("enable server #{data[0]}/#{data[1]}")
144
144
  end
145
145
  end
146
146
  end
147
147
  when /show stat (.+)/
148
- fieldnames=$1
149
- status=unixsock("show stat")
150
- indices = fieldnames.split(" ").map do |name|
148
+ fieldnames = Regexp.last_match[ 1]
149
+ status = unixsock('show stat')
150
+ indices = fieldnames.split(' ').map do |name|
151
151
  status.first.split(',').index(name) || begin
152
152
  $stderr.puts("no such field: #{name}")
153
153
  $stderr.puts(" #{status.first}")
@@ -156,15 +156,15 @@ begin
156
156
  end
157
157
  status[1..-1].each do |line|
158
158
  row = line.split(',')
159
- filtered = indices.map {|index| row[index] }
159
+ filtered = indices.map { |index| row[index] }
160
160
  puts (row[0...2] + filtered).compact.join(',')
161
161
  end
162
162
  when /enable all (.+)/
163
- servername=$1
164
- status=unixsock("show stat")
163
+ servername = Regexp.last_match[ 1]
164
+ status = unixsock('show stat')
165
165
  status.each do |line|
166
166
  data = line.split(',')
167
- if ( ( data[1] == servername ) && ( data[17] =~ /Down|MAINT/i ) )
167
+ if ( data[1] == servername) && ( data[17] =~ /Down|MAINT/i)
168
168
  unixsock("enable server #{data[0]}/#{servername}")
169
169
  end
170
170
  end
data/haproxyctl CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  require 'pathname'
15
15
  lib = File.join(File.dirname(Pathname.new(__FILE__).realpath), '../lib')
16
- $:.unshift lib unless $:.include?(lib)
16
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
17
17
 
18
18
  require 'haproxyctl'
19
19
  include HAProxyCTL
@@ -23,70 +23,70 @@ argument = ARGV.join(' ')
23
23
  unless has_exec?
24
24
  puts usage if argument =~ /help/ || ARGV.length < 1
25
25
 
26
- raise "Cannot find haproxy executable. Please ensure it is in your $PATH, or set $HAPROXY_BIN environment variable."
26
+ fail 'Cannot find haproxy executable. Please ensure it is in your $PATH, or set $HAPROXY_BIN environment variable.'
27
27
  end
28
28
 
29
29
  display_usage! if argument =~ /help/ || ARGV.length < 1
30
30
 
31
31
  begin
32
32
  case argument
33
- when "start"
33
+ when 'start'
34
34
  if pidof
35
- raise("haproxy is already running on pid #{pidof}!")
35
+ fail("haproxy is already running on pid #{pidof}!")
36
36
  else
37
37
  start
38
38
  end
39
- when "stop"
39
+ when 'stop'
40
40
  stop(check_running)
41
- when "restart"
41
+ when 'restart'
42
42
  if pidof
43
43
  stop(pidof)
44
- stillpidof = check_running()
44
+ stillpidof = check_running
45
45
  while stillpidof == pidof
46
46
  puts "still haven't killed old pid. waiting 3s for existing connections to die... (ctrl+c to stop)"
47
47
  sleep 3
48
- stillpidof = check_running() || 0
48
+ stillpidof = check_running || 0
49
49
  end
50
- start()
50
+ start
51
51
  else
52
- puts "haproxy was not running. starting..."
53
- start()
52
+ puts 'haproxy was not running. starting...'
53
+ start
54
54
  end
55
- when "reload"
56
- if ( pidof )
55
+ when 'reload'
56
+ if pidof
57
57
  reload(pidof)
58
58
  else
59
- puts "haproxy not running. starting..."
60
- start()
59
+ puts 'haproxy not running. starting...'
60
+ start
61
61
  end
62
- when "status"
63
- if ( pidof )
62
+ when 'status'
63
+ if pidof
64
64
  puts "haproxy is running on pid #{pidof}.\nthese ports are used and guys are connected:"
65
65
  system("lsof -ln -i |awk \'$2 ~ /#{pidof}/ {print $8\" \"$9}\'")
66
66
  else
67
- puts "haproxy is not running"
67
+ puts 'haproxy is not running'
68
68
  end
69
- when "configcheck"
69
+ when 'configcheck'
70
70
  puts `#{exec} -c -f #{config_path}`
71
- when "nagios"
72
- if ( pidof )
73
- puts "OK"
71
+ when 'nagios'
72
+ if pidof
73
+ puts 'OK'
74
74
  exit
75
75
  else
76
- puts "CRITICAL: HAProxy is not running!"
76
+ puts 'CRITICAL: HAProxy is not running!'
77
77
  exit(2)
78
78
  end
79
- when "cloudkick"
80
- if ( pidof )
81
- puts "status ok haproxy is running"
79
+ when 'cloudkick'
80
+ if pidof
81
+ puts 'status ok haproxy is running'
82
82
  conn = `lsof -ln -i |grep -c #{pidof}`.chomp.to_i
83
83
  # removes the listener
84
84
  conn = conn - 1
85
85
  puts "metric connections int #{conn}"
86
- status=unixsock("show stat")
86
+ status = unixsock('show stat')
87
87
  status.each do |line|
88
88
  line = line.split(',')
89
- if (line[0] !~ /^#/)
89
+ if line[0] !~ /^#/
90
90
  host = "#{line[0]}_#{line[1]}"
91
91
  puts "metric #{host}_request_rate int #{line[47]}" if line[47].to_i > 0
92
92
  puts "metric #{host}_total_requests gauge #{line[49]}" if line[49].to_i > 0
@@ -95,59 +95,59 @@ begin
95
95
  end
96
96
  end
97
97
  else
98
- puts "status err haproxy is not running!"
98
+ puts 'status err haproxy is not running!'
99
99
  end
100
- when "show health"
101
- status=unixsock("show stat")
100
+ when 'show health'
101
+ status = unixsock('show stat')
102
102
  status.each do |line|
103
103
  data = line.split(',')
104
104
  printf "%-30s %-30s %-7s %3s\n", data[0], data[1], data[17], data[18]
105
105
  end
106
106
  when /show backend(s?)/
107
- status=unixsock("show stat").grep(/BACKEND/)
107
+ status = unixsock('show stat').grep(/BACKEND/)
108
108
  status.each do |line|
109
109
  data = line.split(',')
110
110
  printf "%-30s %-30s %-7s %3s\n", data[0], data[1], data[17], data[18]
111
111
  end
112
112
  when /disable all EXCEPT (.+)/
113
- servername=$1
114
- status=unixsock("show stat")
113
+ servername = Regexp.last_match[ 1]
114
+ status = unixsock('show stat')
115
115
  backend = status.grep(/#{servername}/)
116
116
  backend.each do |line|
117
117
  backend_group = line.split(',')
118
118
  status.each do |pool|
119
119
  data = pool.split(',')
120
- if ( (data[0] == backend_group[0]) && ( data[1] !~ /#{servername}|BACKEND|FRONTEND/ ) && ( data[17] == 'UP' ) )
120
+ if (data[0] == backend_group[0]) && ( data[1] !~ /#{servername}|BACKEND|FRONTEND/) && ( data[17] == 'UP')
121
121
  unixsock("disable server #{data[0]}/#{data[1]}")
122
122
  end
123
123
  end
124
124
  end
125
125
  when /disable all (.+)/
126
- servername=$1
127
- status=unixsock("show stat")
126
+ servername = Regexp.last_match[ 1]
127
+ status = unixsock('show stat')
128
128
  status.each do |line|
129
129
  data = line.split(',')
130
- if ( ( data[1] == servername ) && ( data[17] == 'UP' ) )
130
+ if ( data[1] == servername) && ( data[17] == 'UP')
131
131
  unixsock("disable server #{data[0]}/#{servername}")
132
132
  end
133
133
  end
134
134
  when /enable all EXCEPT (.+)/
135
- servername=$1
136
- status=unixsock("show stat")
135
+ servername = Regexp.last_match[ 1]
136
+ status = unixsock('show stat')
137
137
  backend = status.grep(/#{servername}/)
138
138
  backend.each do |line|
139
139
  backend_group = line.split(',')
140
140
  status.each do |pool|
141
141
  data = pool.split(',')
142
- if ( (data[0] == backend_group[0]) && ( data[1] !~ /#{servername}|BACKEND|FRONTEND/ ) && ( data[17] =~ /Down|MAINT/i ) )
142
+ if (data[0] == backend_group[0]) && ( data[1] !~ /#{servername}|BACKEND|FRONTEND/) && ( data[17] =~ /Down|MAINT/i)
143
143
  unixsock("enable server #{data[0]}/#{data[1]}")
144
144
  end
145
145
  end
146
146
  end
147
147
  when /show stat (.+)/
148
- fieldnames=$1
149
- status=unixsock("show stat")
150
- indices = fieldnames.split(" ").map do |name|
148
+ fieldnames = Regexp.last_match[ 1]
149
+ status = unixsock('show stat')
150
+ indices = fieldnames.split(' ').map do |name|
151
151
  status.first.split(',').index(name) || begin
152
152
  $stderr.puts("no such field: #{name}")
153
153
  $stderr.puts(" #{status.first}")
@@ -156,15 +156,15 @@ begin
156
156
  end
157
157
  status[1..-1].each do |line|
158
158
  row = line.split(',')
159
- filtered = indices.map {|index| row[index] }
159
+ filtered = indices.map { |index| row[index] }
160
160
  puts (row[0...2] + filtered).compact.join(',')
161
161
  end
162
162
  when /enable all (.+)/
163
- servername=$1
164
- status=unixsock("show stat")
163
+ servername = Regexp.last_match[ 1]
164
+ status = unixsock('show stat')
165
165
  status.each do |line|
166
166
  data = line.split(',')
167
- if ( ( data[1] == servername ) && ( data[17] =~ /Down|MAINT/i ) )
167
+ if ( data[1] == servername) && ( data[17] =~ /Down|MAINT/i)
168
168
  unixsock("enable server #{data[0]}/#{servername}")
169
169
  end
170
170
  end
@@ -6,7 +6,7 @@
6
6
  # quick and dirty (but sometimes handy) installer.
7
7
  #
8
8
 
9
- HAPROXYVER="1.4.23"
9
+ HAPROXYVER="1.4.24"
10
10
  STARTINGDIR=$PWD
11
11
 
12
12
  # make sure we have make, pcre and junk
data/lib/haproxyctl.rb CHANGED
@@ -6,14 +6,14 @@ module HAProxyCTL
6
6
  include Environment
7
7
 
8
8
  def start
9
- puts "starting haproxy..."
9
+ puts 'starting haproxy...'
10
10
  system("#{exec} -f #{config_path} -D -p #{pidfile}")
11
- newpid = check_running()
12
- if ( newpid =~ /^\d+$/ )
11
+ newpid = check_running
12
+ if newpid =~ /^\d+$/
13
13
  puts "haproxy is running on pid #{newpid}"
14
14
  return true
15
15
  else
16
- puts "error. haproxy did not start!"
16
+ puts 'error. haproxy did not start!'
17
17
  return nil
18
18
  end
19
19
  end
@@ -22,39 +22,38 @@ module HAProxyCTL
22
22
  if pid
23
23
  puts "stopping haproxy on pid #{pid}..."
24
24
  system("kill #{pid}") || system("kill -9 #{pid}")
25
- puts "... stopped"
25
+ puts '... stopped'
26
26
  else
27
- puts "haproxy is not running!"
27
+ puts 'haproxy is not running!'
28
28
  end
29
29
  end
30
30
 
31
31
  def reload(pid)
32
- if ( pid )
32
+ if pid
33
33
  puts "gracefully stopping connections on pid #{pid}..."
34
34
  system("#{exec} -f #{config_path} -sf #{pid}")
35
35
  puts "checking if connections still alive on #{pid}..."
36
- nowpid = check_running()
37
- while ( pid == nowpid )
36
+ nowpid = check_running
37
+ while pid == nowpid
38
38
  puts "still haven't killed old pid.
39
39
  waiting 2s for existing connections to die...
40
40
  (ctrl+c to stop this check)"
41
41
  sleep 2
42
- nowpid = check_running() || 0
42
+ nowpid = check_running || 0
43
43
  end
44
44
  puts "reloaded haproxy on pid #{nowpid}"
45
45
  else
46
- puts "haproxy is not running!"
46
+ puts 'haproxy is not running!'
47
47
  end
48
48
  end
49
49
 
50
50
  def unixsock(command)
51
-
52
- output=[]
51
+ output = []
53
52
  runs = 0
54
-
55
- begin
56
- ctl=UNIXSocket.open(socket)
57
- if (ctl)
53
+
54
+ begin
55
+ ctl = UNIXSocket.open(socket)
56
+ if ctl
58
57
  ctl.write "#{command}\r\n"
59
58
  else
60
59
  puts "cannot talk to #{socket}"
@@ -63,21 +62,21 @@ module HAProxyCTL
63
62
  ctl.close
64
63
  sleep 0.5
65
64
  runs += 1
66
- if ( runs < 4 )
65
+ if runs < 4
67
66
  retry
68
67
  else
69
68
  puts "the unix socket at #{socket} closed before we could complete this request"
70
69
  exit
71
70
  end
72
71
  end
73
- while (line = ctl.gets) do
74
- unless ( line =~ /Unknown command/ )
72
+ while (line = ctl.gets)
73
+ unless line =~ /Unknown command/
75
74
  output << line
76
75
  end
77
76
  end
78
77
  ctl.close
79
78
 
80
- return output
79
+ output
81
80
  end
82
81
 
83
82
  def display_usage!
@@ -87,7 +86,7 @@ module HAProxyCTL
87
86
 
88
87
  def usage
89
88
  <<-USAGE
90
- usage: #{$0} <argument>
89
+ usage: #{$PROGRAM_NAME} <argument>
91
90
  where <argument> can be:
92
91
  start : start haproxy unless it is already running
93
92
  stop : stop an existing haproxy
@@ -33,25 +33,25 @@ module HAProxyCTL
33
33
  end
34
34
  end
35
35
 
36
- return(@exec)
36
+ (@exec)
37
37
  end
38
38
 
39
39
  def socket
40
40
  @socket ||= begin
41
41
  config.match /stats\s+socket \s*([^\s]*)/
42
- $1 || raise("Expecting 'stats socket <UNIX_socket_path>' in #{config_path}")
42
+ Regexp.last_match[1] || fail("Expecting 'stats socket <UNIX_socket_path>' in #{config_path}")
43
43
  end
44
44
  end
45
45
 
46
46
  def pidfile
47
47
  if config.match(/pidfile \s*([^\s]*)/)
48
- @pidfile = $1
48
+ @pidfile = Regexp.last_match[1]
49
49
  else
50
- std_pid = "/var/run/haproxy.pid"
50
+ std_pid = '/var/run/haproxy.pid'
51
51
  if File.exists?(std_pid)
52
52
  @pidfile = std_pid
53
53
  else
54
- raise("Expecting 'pidfile <pid_file_path>' in #{config_path} or a pid file in #{std_pid}")
54
+ fail("Expecting 'pidfile <pid_file_path>' in #{config_path} or a pid file in #{std_pid}")
55
55
  end
56
56
  end
57
57
  end
@@ -68,6 +68,6 @@ module HAProxyCTL
68
68
  return pid
69
69
  end
70
70
  end
71
- alias :pidof :check_running
71
+ alias_method :pidof, :check_running
72
72
  end
73
73
  end
@@ -1,3 +1,3 @@
1
1
  module HAProxyCTL
2
- VERSION = "1.1.0"
2
+ VERSION = '1.2.0'
3
3
  end
data/rhapr/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'rspec'
4
4
  require 'rspec/core'
5
5
  require 'rspec/core/rake_task'
6
6
 
7
- task :release => :spec
7
+ task release: :spec
8
8
 
9
9
  desc 'Run Specs'
10
10
  RSpec::Core::RakeTask.new(:spec) do |spec|
@@ -12,12 +12,12 @@ module Rhapr
12
12
  @config_path = ENV['HAPROXY_CONFIG']
13
13
  else
14
14
  config_paths = %w{/etc/haproxy/haproxy.cfg /etc/haproxy.cfg /usr/local/etc/haproxy.cfg}
15
- config_paths.select!{|cfg| File.exists?(cfg)}
15
+ config_paths.select! { |cfg| File.exists?(cfg) }
16
16
 
17
17
  @config_path = config_paths.first
18
18
  end
19
19
 
20
- return(@config_path)
20
+ (@config_path)
21
21
  end
22
22
 
23
23
  # @return [String] The raw contents of the HAProxy configuration file.
@@ -52,7 +52,7 @@ module Rhapr
52
52
  end
53
53
  end
54
54
 
55
- return(@exec)
55
+ (@exec)
56
56
  end
57
57
 
58
58
  # @return [UNIXSocket] A connection to the HAProxy Socket
@@ -71,7 +71,7 @@ module Rhapr
71
71
  def socket_path
72
72
  @socket_path ||= begin
73
73
  config.match /stats\s+socket\s+([^\s]*)/
74
- $1 || raise(RuntimeError.new "Expecting 'stats socket <UNIX_socket_path>' in #{config_path}")
74
+ Regexp.last_match[1] || fail(RuntimeError.new "Expecting 'stats socket <UNIX_socket_path>' in #{config_path}")
75
75
  end
76
76
  end
77
77
 
@@ -81,7 +81,7 @@ module Rhapr
81
81
  def pid
82
82
  @pid ||= begin
83
83
  config.match /pidfile ([^\s]*)/
84
- $1 || '/var/run/haproxy.pid'
84
+ Regexp.last_match[1] || '/var/run/haproxy.pid'
85
85
  end
86
86
  end
87
87
 
@@ -94,6 +94,6 @@ module Rhapr
94
94
 
95
95
  return pidof unless pidof.empty?
96
96
  end
97
- alias :pidof :check_running
97
+ alias_method :pidof, :check_running
98
98
  end
99
99
  end
@@ -21,7 +21,7 @@ module Rhapr
21
21
  resp = send 'clear counters'
22
22
  resp == EMPTY
23
23
  end
24
- alias :clear :clear_counters
24
+ alias_method :clear, :clear_counters
25
25
 
26
26
  # @return [Hash{String => String}] The 'show info' attributes, from HAProxy, parsed into a Hash.
27
27
  def show_info
@@ -29,38 +29,38 @@ module Rhapr
29
29
 
30
30
  attrs = resp.split("\n")
31
31
 
32
- attrs.map! {|line|
32
+ attrs.map! do|line|
33
33
  _attr, *_val = line.split(/: /)
34
- [ _attr, _val.join ]
35
- }
34
+ [_attr, _val.join]
35
+ end
36
36
 
37
- Hash[ attrs ]
37
+ Hash[ attrs]
38
38
  end
39
- alias :info :show_info
39
+ alias_method :info, :show_info
40
40
 
41
41
  # @return [Array<Hash{String => String}>] The 'show stat' response, from HAProxy, parsed into an Array of Hashes.
42
42
  def show_stat
43
43
  resp = send 'show stat'
44
44
  resp.gsub!(/^# /, '')
45
45
 
46
- csv = CSV.parse(resp, :headers => true)
46
+ csv = CSV.parse(resp, headers: true)
47
47
  out = csv.map(&:to_a)
48
48
 
49
- out.map!{|row| Hash[ row ]}
49
+ out.map! { |row| Hash[ row] }
50
50
 
51
- return(out)
51
+ (out)
52
52
  end
53
- alias :stat :show_stat
53
+ alias_method :stat, :show_stat
54
54
 
55
55
  # @todo: Implement. I do not know the possible errors that may be present, nor how HAProxy will render them.
56
56
  def show_errors
57
57
  end
58
- alias :errors :show_errors
58
+ alias_method :errors, :show_errors
59
59
 
60
60
  # @todo: Implement. Not sure how this should look. It's likely that I will want to 'interpret' the data that is spit out.
61
61
  def show_sess(id)
62
62
  end
63
- alias :session :show_sess
63
+ alias_method :session, :show_sess
64
64
 
65
65
  # @return [Array<Fixnum, Fixnum>] An Array with Two Elements: the Current Weight and the Initial Weight.
66
66
  # @todo: Allow the numeric id to be used as a parameter?
@@ -68,11 +68,11 @@ module Rhapr
68
68
  resp = send "get weight #{backend}/#{server}"
69
69
 
70
70
  resp.match /([[:digit:]]+) \(initial ([[:digit:]]+)\)/
71
- weight, initial = $1, $2
71
+ weight, initial = Regexp.last_match[1], Regexp.last_match[2]
72
72
 
73
73
  return [weight.to_i, initial.to_i] if weight and initial
74
74
 
75
- raise ArgumentError.new("HAProxy did not recognize the specified Backend/Server. Response from HAProxy: #{resp}")
75
+ fail ArgumentError.new("HAProxy did not recognize the specified Backend/Server. Response from HAProxy: #{resp}")
76
76
  end
77
77
 
78
78
  # @todo: Implement.
@@ -88,7 +88,7 @@ module Rhapr
88
88
  def enable(backend, server)
89
89
  end
90
90
 
91
- protected
91
+ protected
92
92
  # @param [UNIXSocket]
93
93
  # @param [String]
94
94
  # @return [nil]
@@ -105,7 +105,7 @@ module Rhapr
105
105
  # @see Rhapr::Interface#read
106
106
  def read_full(socket)
107
107
  output = []
108
- output << read(socket) until(sock.eof?)
108
+ output << read(socket) until sock.eof?
109
109
  end
110
110
  end
111
111
  end
data/rhapr/rhapr.gemspec CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
3
  require 'rhapr/version'
4
4
 
5
5
  Gem::Specification.new do |s|
@@ -17,6 +17,6 @@ Gem::Specification.new do |s|
17
17
 
18
18
  s.files = `git ls-files`.split("\n")
19
19
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
21
21
  s.require_paths = ['lib']
22
22
  end
@@ -4,7 +4,7 @@ IGNORE = /\.(gitmodules|png$|tar$|gz$|rbc$|gem$|pdf$)/
4
4
 
5
5
  describe 'The application itself' do
6
6
  it 'has no malformed whitespace' do
7
- files = `git ls-files`.split("\n").select {|fn| fn !~ IGNORE}
7
+ files = `git ls-files`.split("\n").select { |fn| fn !~ IGNORE }
8
8
 
9
9
  files.should be_well_formed
10
10
  end
@@ -49,9 +49,9 @@ describe Rhapr::Environment do
49
49
  it 'should raise an exception if it cannot read from #config_path' do
50
50
  File.should_receive(:read).and_raise(Errno::ENOENT)
51
51
 
52
- lambda {
52
+ lambda do
53
53
  @env_test.config
54
- }.should raise_error(RuntimeError)
54
+ end.should raise_error(RuntimeError)
55
55
  end
56
56
 
57
57
  it 'should read and return the contents of a file' do
@@ -106,9 +106,9 @@ describe Rhapr::Environment do
106
106
  it 'should raise an error if it cannot derive an io socket from the config file' do
107
107
  @env_test.should_receive(:config).and_return { config_for(:crappy_haproxy) }
108
108
 
109
- lambda {
109
+ lambda do
110
110
  @env_test.socket_path
111
- }.should raise_error(RuntimeError)
111
+ end.should raise_error(RuntimeError)
112
112
  end
113
113
  end
114
114
 
@@ -1,21 +1,20 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Rhapr::Interface do
4
- let(:basic_info) {
4
+ let(:basic_info) do
5
5
  "Name: HAProxy\nVersion: 1.4.15\nRelease_date: 2011/04/08\nNbproc: 1\nProcess_num: 1\nPid: 97413\nUptime: 0d 18h43m53s\n" <<
6
6
  "Uptime_sec: 67433\nMemmax_MB: 0\nUlimit-n: 2066\nMaxsock: 2066\nMaxconn: 1024\nMaxpipes: 0\nCurrConns: 1\nPipesUsed: 0\n" <<
7
7
  "PipesFree: 0\nTasks: 7\nRun_queue: 1\nnode: skg.local\ndescription: \n"
8
- }
8
+ end
9
9
 
10
- let(:basic_stat) {
11
- "# pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail," <<
12
- "chkdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,rate,rate_lim,rate_max,check_status,check_code,check_duration," <<
10
+ let(:basic_stat) do
11
+ '# pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,' <<
12
+ 'chkdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,rate,rate_lim,rate_max,check_status,check_code,check_duration,' <<
13
13
  "hrsp_1xx,hrsp_2xx,hrsp_3xx,hrsp_4xx,hrsp_5xx,hrsp_other,hanafail,req_rate,req_rate_max,req_tot,cli_abrt,srv_abrt,\nsrv,FRONTEND," <<
14
14
  ",,0,0,2000,0,0,0,0,0,0,,,,,OPEN,,,,,,,,,1,1,0,,,,0,0,0,0,,,,,,,,,,,0,0,0,,,\nsrv,srv1,0,0,0,0,20,0,0,0,,0,,0,0,0,0,DOWN,1,1,0," <<
15
15
  "0,1,72468,72468,,1,1,1,,0,,2,0,,0,L4CON,,0,,,,,,,0,,,,0,0,\nsrv,srv2,0,0,0,0,20,0,0,0,,0,,0,0,0,0,DOWN,1,1,0,0,1,72465,72465,," <<
16
16
  "1,1,2,,0,,2,0,,0,L4CON,,0,,,,,,,0,,,,0,0,\n"
17
- }
18
-
17
+ end
19
18
 
20
19
  subject { Rhapr::Interface.new }
21
20
 
@@ -46,7 +45,7 @@ describe Rhapr::Interface do
46
45
  stats = subject.show_stat
47
46
 
48
47
  stats.should be_a(Array)
49
- stats.each{|stat| stat.should be_a(Hash) }
48
+ stats.each { |stat| stat.should be_a(Hash) }
50
49
  end
51
50
 
52
51
  it 'should strip the "# " from the beginning of the headers, before calling CSV.parse' do
@@ -70,9 +69,9 @@ describe Rhapr::Interface do
70
69
  it 'should raise an error if the specific backend+server is not known to HAProxy' do
71
70
  subject.should_receive(:send).with('get weight test/test9').and_return('No such server.')
72
71
 
73
- lambda {
72
+ lambda do
74
73
  subject.get_weight('test', 'test9')
75
- }.should raise_error(ArgumentError, "HAProxy did not recognize the specified Backend/Server. Response from HAProxy: No such server.")
74
+ end.should raise_error(ArgumentError, 'HAProxy did not recognize the specified Backend/Server. Response from HAProxy: No such server.')
76
75
  end
77
76
  end
78
77
 
@@ -3,7 +3,7 @@ require 'bundler/setup'
3
3
  Bundler.require :default
4
4
  Bundler.require :development
5
5
 
6
- Dir[ Bundler.root.join('spec/support/**/*.rb') ].each{|f| require f}
6
+ Dir[ Bundler.root.join('spec/support/**/*.rb')].each { |f| require f }
7
7
 
8
8
  RSpec.configure do |c|
9
9
  c.include CustomMatchers
@@ -8,7 +8,7 @@ module ConfigFixtures
8
8
  def fixture_for(sym)
9
9
  config_fixtures[sym][:fixture]
10
10
  end
11
- alias :config_for :fixture_for
11
+ alias_method :config_for, :fixture_for
12
12
 
13
13
  def path_for(sym)
14
14
  config_fixtures[sym][:path]
@@ -17,20 +17,20 @@ module ConfigFixtures
17
17
  # @see ConfigFixtures#create_fixture_hash
18
18
  def config_fixtures
19
19
  @config_fixtures ||= begin
20
- hash = Hash.new {|k,v| k[v] = {}}
20
+ hash = Hash.new { |k, v| k[v] = {} }
21
21
  hash.merge!(create_fixture_hash)
22
22
  end
23
23
  end
24
24
 
25
25
  # @return [Hash{Symbol => String}]
26
26
  def create_fixture_hash
27
- Hash[ find_fixtures.map{|fpath| map_fixture(fpath) } ]
27
+ Hash[ find_fixtures.map { |fpath| map_fixture(fpath) }]
28
28
  end
29
29
 
30
30
  # @param [String]
31
31
  # @return [Array<Symbol, String>]
32
32
  def map_fixture(fpath)
33
- [symbolize_filename(fpath), {:path => fpath, :fixture => read_file(fpath)}]
33
+ [symbolize_filename(fpath), { path: fpath, fixture: read_file(fpath) }]
34
34
  end
35
35
 
36
36
  # @return [Array<String>]
@@ -1,13 +1,13 @@
1
1
  module CustomMatchers
2
2
  class BeWellFormed
3
3
  def matches?(files)
4
- @errors = files.map {|filename|
4
+ @errors = files.map do|filename|
5
5
  [
6
6
  check_for_tabs(filename),
7
7
  excessive_spacing(filename),
8
8
  newline_precedes_eof(filename)
9
9
  ]
10
- }.flatten.compact
10
+ end.flatten.compact
11
11
 
12
12
  @errors.empty?
13
13
  end
@@ -16,7 +16,7 @@ module CustomMatchers
16
16
  @errors.join("\n")
17
17
  end
18
18
 
19
- private
19
+ private
20
20
  def check_for_tabs(filename)
21
21
  bad_lines = File.readlines(filename).each_with_index.map do |line, line_no|
22
22
  line_no + 1 if line["\t"] and line !~ /^\s+#.*\s+\n$/
data/rubocop-todo.yml ADDED
@@ -0,0 +1,74 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`
2
+ # on 2014-02-04 10:23:58 +0100 using RuboCop version 0.18.1.
3
+ # The point is for the user to remove these configuration records
4
+ # one by one as the offences are removed from the code base.
5
+ # Note that changes in the inspected code, or installation of new
6
+ # versions of RuboCop, may require this file to be generated again.
7
+
8
+ # Offence count: 3
9
+ AmbiguousRegexpLiteral:
10
+ Enabled: false
11
+
12
+ # Offence count: 3
13
+ # Cop supports --auto-correct.
14
+ AndOr:
15
+ Enabled: false
16
+
17
+ # Offence count: 3
18
+ BlockAlignment:
19
+ Enabled: false
20
+
21
+ # Offence count: 8
22
+ BlockNesting:
23
+ Max: 4
24
+
25
+ # Offence count: 10
26
+ Documentation:
27
+ Enabled: false
28
+
29
+ # Offence count: 1
30
+ EmptyLinesAroundAccessModifier:
31
+ Enabled: false
32
+
33
+ # Offence count: 2
34
+ IfUnlessModifier:
35
+ Enabled: false
36
+
37
+ # Offence count: 80
38
+ LineLength:
39
+ Max: 152
40
+
41
+ # Offence count: 5
42
+ # Configuration parameters: CountComments.
43
+ MethodLength:
44
+ Max: 32
45
+
46
+ # Offence count: 2
47
+ ParenthesesAsGroupedExpression:
48
+ Enabled: false
49
+
50
+ # Offence count: 2
51
+ # Configuration parameters: NamePrefixBlacklist.
52
+ PredicateName:
53
+ Enabled: false
54
+
55
+ # Offence count: 3
56
+ # Configuration parameters: SupportedStyles.
57
+ RaiseArgs:
58
+ EnforcedStyle: compact
59
+
60
+ # Offence count: 1
61
+ RedundantBegin:
62
+ Enabled: false
63
+
64
+ # Offence count: 2
65
+ Syntax:
66
+ Enabled: false
67
+
68
+ # Offence count: 2
69
+ UselessAssignment:
70
+ Enabled: false
71
+
72
+ # Offence count: 2
73
+ Void:
74
+ Enabled: false
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haproxyctl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-10 00:00:00.000000000 Z
12
+ date: 2014-02-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: This is a simple wrapper to make life with HAProxy a little more convenient.
15
15
  Acts as an init script for start, stop, reload, restart, etc. Leverages 'socket'
@@ -24,6 +24,7 @@ extensions: []
24
24
  extra_rdoc_files: []
25
25
  files:
26
26
  - .gitignore
27
+ - .rubocop.yml
27
28
  - Gemfile
28
29
  - LICENSE
29
30
  - README.md
@@ -53,6 +54,7 @@ files:
53
54
  - rhapr/spec/spec_helper.rb
54
55
  - rhapr/spec/support/config_fixtures.rb
55
56
  - rhapr/spec/support/custom_matchers.rb
57
+ - rubocop-todo.yml
56
58
  homepage: https://github.com/flores/haproxyctl
57
59
  licenses:
58
60
  - MIT