mathieuravaux-god 0.7.11

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.
Files changed (142) hide show
  1. data/Announce.txt +135 -0
  2. data/History.txt +284 -0
  3. data/Manifest.txt +143 -0
  4. data/README.txt +59 -0
  5. data/Rakefile +35 -0
  6. data/bin/god +128 -0
  7. data/examples/events.god +84 -0
  8. data/examples/gravatar.god +54 -0
  9. data/examples/single.god +66 -0
  10. data/ext/god/extconf.rb +55 -0
  11. data/ext/god/kqueue_handler.c +123 -0
  12. data/ext/god/netlink_handler.c +167 -0
  13. data/god.gemspec +38 -0
  14. data/ideas/execve/.DS_Store +0 -0
  15. data/ideas/execve/execve.c +29 -0
  16. data/ideas/execve/extconf.rb +11 -0
  17. data/ideas/execve/go.rb +8 -0
  18. data/ideas/future.god +82 -0
  19. data/init/god +42 -0
  20. data/lib/god.rb +668 -0
  21. data/lib/god/behavior.rb +52 -0
  22. data/lib/god/behaviors/clean_pid_file.rb +21 -0
  23. data/lib/god/behaviors/clean_unix_socket.rb +21 -0
  24. data/lib/god/behaviors/notify_when_flapping.rb +51 -0
  25. data/lib/god/cli/command.rb +229 -0
  26. data/lib/god/cli/run.rb +176 -0
  27. data/lib/god/cli/version.rb +23 -0
  28. data/lib/god/condition.rb +96 -0
  29. data/lib/god/conditions/always.rb +23 -0
  30. data/lib/god/conditions/complex.rb +86 -0
  31. data/lib/god/conditions/cpu_usage.rb +83 -0
  32. data/lib/god/conditions/degrading_lambda.rb +52 -0
  33. data/lib/god/conditions/disk_usage.rb +27 -0
  34. data/lib/god/conditions/file_mtime.rb +28 -0
  35. data/lib/god/conditions/flapping.rb +128 -0
  36. data/lib/god/conditions/http_response_code.rb +168 -0
  37. data/lib/god/conditions/lambda.rb +25 -0
  38. data/lib/god/conditions/memory_usage.rb +84 -0
  39. data/lib/god/conditions/process_exits.rb +72 -0
  40. data/lib/god/conditions/process_running.rb +74 -0
  41. data/lib/god/conditions/simple_response.rb +129 -0
  42. data/lib/god/conditions/tries.rb +44 -0
  43. data/lib/god/configurable.rb +57 -0
  44. data/lib/god/contact.rb +106 -0
  45. data/lib/god/contacts/campfire.rb +82 -0
  46. data/lib/god/contacts/email.rb +95 -0
  47. data/lib/god/contacts/jabber.rb +65 -0
  48. data/lib/god/contacts/twitter.rb +39 -0
  49. data/lib/god/contacts/webhook.rb +47 -0
  50. data/lib/god/dependency_graph.rb +41 -0
  51. data/lib/god/diagnostics.rb +37 -0
  52. data/lib/god/driver.rb +206 -0
  53. data/lib/god/errors.rb +24 -0
  54. data/lib/god/event_handler.rb +111 -0
  55. data/lib/god/event_handlers/dummy_handler.rb +13 -0
  56. data/lib/god/event_handlers/kqueue_handler.rb +17 -0
  57. data/lib/god/event_handlers/netlink_handler.rb +13 -0
  58. data/lib/god/logger.rb +120 -0
  59. data/lib/god/metric.rb +59 -0
  60. data/lib/god/process.rb +341 -0
  61. data/lib/god/registry.rb +32 -0
  62. data/lib/god/simple_logger.rb +53 -0
  63. data/lib/god/socket.rb +96 -0
  64. data/lib/god/sugar.rb +47 -0
  65. data/lib/god/system/portable_poller.rb +42 -0
  66. data/lib/god/system/process.rb +42 -0
  67. data/lib/god/system/slash_proc_poller.rb +92 -0
  68. data/lib/god/task.rb +491 -0
  69. data/lib/god/timeline.rb +25 -0
  70. data/lib/god/trigger.rb +43 -0
  71. data/lib/god/watch.rb +183 -0
  72. data/site/images/banner.jpg +0 -0
  73. data/site/images/bg.gif +0 -0
  74. data/site/images/bg_grey.gif +0 -0
  75. data/site/images/bullet.jpg +0 -0
  76. data/site/images/corner_green.gif +0 -0
  77. data/site/images/corner_green.psd +0 -0
  78. data/site/images/corner_pink.gif +0 -0
  79. data/site/images/god_logo1.gif +0 -0
  80. data/site/images/header_bg.gif +0 -0
  81. data/site/images/header_bg.jpg +0 -0
  82. data/site/images/red_dot.gif +0 -0
  83. data/site/images/top_bg.gif +0 -0
  84. data/site/index.html +563 -0
  85. data/site/install.html +2 -0
  86. data/site/javascripts/code_highlighter.js +188 -0
  87. data/site/javascripts/ruby.js +18 -0
  88. data/site/stylesheets/layout.css +174 -0
  89. data/test/configs/child_events/child_events.god +44 -0
  90. data/test/configs/child_events/simple_server.rb +3 -0
  91. data/test/configs/child_polls/child_polls.god +37 -0
  92. data/test/configs/child_polls/simple_server.rb +12 -0
  93. data/test/configs/complex/complex.god +59 -0
  94. data/test/configs/complex/simple_server.rb +3 -0
  95. data/test/configs/contact/contact.god +84 -0
  96. data/test/configs/contact/simple_server.rb +3 -0
  97. data/test/configs/daemon_events/daemon_events.god +37 -0
  98. data/test/configs/daemon_events/simple_server.rb +8 -0
  99. data/test/configs/daemon_events/simple_server_stop.rb +11 -0
  100. data/test/configs/daemon_polls/daemon_polls.god +17 -0
  101. data/test/configs/daemon_polls/simple_server.rb +6 -0
  102. data/test/configs/degrading_lambda/degrading_lambda.god +31 -0
  103. data/test/configs/degrading_lambda/tcp_server.rb +15 -0
  104. data/test/configs/lifecycle/lifecycle.god +25 -0
  105. data/test/configs/matias/matias.god +50 -0
  106. data/test/configs/real.rb +59 -0
  107. data/test/configs/running_load/running_load.god +16 -0
  108. data/test/configs/stress/simple_server.rb +3 -0
  109. data/test/configs/stress/stress.god +15 -0
  110. data/test/configs/task/logs/.placeholder +0 -0
  111. data/test/configs/task/task.god +26 -0
  112. data/test/configs/test.rb +61 -0
  113. data/test/helper.rb +151 -0
  114. data/test/suite.rb +6 -0
  115. data/test/test_behavior.rb +21 -0
  116. data/test/test_campfire.rb +41 -0
  117. data/test/test_condition.rb +50 -0
  118. data/test/test_conditions_disk_usage.rb +56 -0
  119. data/test/test_conditions_http_response_code.rb +109 -0
  120. data/test/test_conditions_process_running.rb +44 -0
  121. data/test/test_conditions_tries.rb +67 -0
  122. data/test/test_contact.rb +109 -0
  123. data/test/test_dependency_graph.rb +62 -0
  124. data/test/test_driver.rb +11 -0
  125. data/test/test_email.rb +45 -0
  126. data/test/test_event_handler.rb +80 -0
  127. data/test/test_god.rb +598 -0
  128. data/test/test_handlers_kqueue_handler.rb +16 -0
  129. data/test/test_logger.rb +63 -0
  130. data/test/test_metric.rb +72 -0
  131. data/test/test_process.rb +246 -0
  132. data/test/test_registry.rb +15 -0
  133. data/test/test_socket.rb +42 -0
  134. data/test/test_sugar.rb +42 -0
  135. data/test/test_system_portable_poller.rb +17 -0
  136. data/test/test_system_process.rb +30 -0
  137. data/test/test_task.rb +262 -0
  138. data/test/test_timeline.rb +37 -0
  139. data/test/test_trigger.rb +59 -0
  140. data/test/test_watch.rb +279 -0
  141. data/test/test_webhook.rb +17 -0
  142. metadata +234 -0
data/Announce.txt ADDED
@@ -0,0 +1,135 @@
1
+ Subject: [ANN] god 0.6.0 released (and mailing list)
2
+
3
+ !!!NEW MAILING LIST!!! We now have a mailing list at http://groups.google.com/group/god-rb
4
+
5
+ This release is primarily focused on increased stability, robustness, and code cleanliness.
6
+
7
+ The last release (0.5.0) switched from TCP sockets to Unix Domain Sockets for the CLI tools. There were some issues regarding file descriptors that would cause god to hang when restarting (the unix socket was being held open by spawned processes). These problems are all fixed in 0.6.0. You may need to kill any processes that were started under god 0.5.0 when you upgrade to 0.6.0 (you will only need to do this once during the upgrade process).
8
+
9
+ More attention is now paid to Syslogging behavior.
10
+
11
+ God will delete its own PID file when terminated via a user request.
12
+
13
+ A new command line option now allows you to check whether your installation properly handles events (sometimes the C extension will compile ok, but still not support events. Gentoo, I'm looking at you). Run `god check` to see an attempt to use the event system. It will tell you if your installation does not support events.
14
+
15
+ A watch can now be removed entirely at runtime using `god remove <watch name>`.
16
+
17
+ A new condition DiskUsage allows you to check the available disk space on a given volume.
18
+
19
+ Updated documentation is now available on the website:
20
+
21
+ http://god.rubyforge.org/
22
+
23
+
24
+ WHAT IS GOD?
25
+
26
+ God is an easy to configure, easy to extend monitoring framework written in Ruby.
27
+
28
+ Keeping your server processes and tasks running should be a simple part of your deployment process. God aims to be the simplest, most powerful monitoring application available.
29
+
30
+
31
+ DISCLAIMER
32
+
33
+ God is still beta so I do not yet recommend you use it for mission critical tasks. We are using it at Powerset, Inc. to monitor our public facing applications, but then, we're daring fellows.
34
+
35
+
36
+ INSTALL
37
+
38
+ sudo gem install god
39
+
40
+
41
+ FEATURES
42
+
43
+ * Config file is written in Ruby
44
+ * Easily write your own custom conditions in Ruby
45
+ * Supports both poll and event based conditions
46
+ * Different poll conditions can have different intervals
47
+ * Easily control non-daemonized processes
48
+
49
+
50
+ EXAMPLE
51
+
52
+ The easiest way to understand how god will make your life better is by looking at a sample config file. The following configuration file is what I use at gravatar.com to keep the mongrels running:
53
+
54
+ # run with: god -c /path/to/gravatar.god
55
+ #
56
+ # This is the actual config file used to keep the mongrels of
57
+ # gravatar.com running.
58
+
59
+ RAILS_ROOT = "/Users/tom/dev/gravatar2"
60
+
61
+ %w{8200 8201 8202}.each do |port|
62
+ God.watch do |w|
63
+ w.name = "gravatar2-mongrel-#{port}"
64
+ w.interval = 30.seconds # default
65
+ w.start = "mongrel_rails start -c #{RAILS_ROOT} -p #{port} \
66
+ -P #{RAILS_ROOT}/log/mongrel.#{port}.pid -d"
67
+ w.stop = "mongrel_rails stop -P #{RAILS_ROOT}/log/mongrel.#{port}.pid"
68
+ w.restart = "mongrel_rails restart -P #{RAILS_ROOT}/log/mongrel.#{port}.pid"
69
+ w.start_grace = 10.seconds
70
+ w.restart_grace = 10.seconds
71
+ w.pid_file = File.join(RAILS_ROOT, "log/mongrel.#{port}.pid")
72
+
73
+ w.behavior(:clean_pid_file)
74
+
75
+ w.start_if do |start|
76
+ start.condition(:process_running) do |c|
77
+ c.interval = 5.seconds
78
+ c.running = false
79
+ end
80
+ end
81
+
82
+ w.restart_if do |restart|
83
+ restart.condition(:memory_usage) do |c|
84
+ c.above = 150.megabytes
85
+ c.times = [3, 5] # 3 out of 5 intervals
86
+ end
87
+
88
+ restart.condition(:cpu_usage) do |c|
89
+ c.above = 50.percent
90
+ c.times = 5
91
+ end
92
+ end
93
+
94
+ # lifecycle
95
+ w.lifecycle do |on|
96
+ on.condition(:flapping) do |c|
97
+ c.to_state = [:start, :restart]
98
+ c.times = 5
99
+ c.within = 5.minute
100
+ c.transition = :unmonitored
101
+ c.retry_in = 10.minutes
102
+ c.retry_times = 5
103
+ c.retry_within = 2.hours
104
+ end
105
+ end
106
+ end
107
+ end
108
+
109
+
110
+ DOCS
111
+
112
+ Detailed documentation is available at http://god.rubyforge.org/
113
+
114
+
115
+ CHANGES
116
+
117
+ == 0.6.0 / 2007-12-4
118
+
119
+ * Minor Enhancement
120
+ * Move Syslog calls into God::Logger and clean up all calling code
121
+ * Remove god's pid file on user requested termination
122
+ * Better handling and cleanup of DRb server's unix domain socket
123
+ * Allow shorthand for requesting a god log
124
+ * Add `god check` to make it easier to diagnose event problems
125
+ * Refactor god binary into class/method structure
126
+ * Implement `god remove` to remove a Task altogether
127
+ * New Conditions
128
+ * DiskUsage < PollCondition - trigger if disk usage is above limit on mount [Rudy Desjardins]
129
+
130
+
131
+
132
+ AUTHORS
133
+
134
+ Tom Preston-Werner
135
+ Kevin Clark
data/History.txt ADDED
@@ -0,0 +1,284 @@
1
+ == 0.7.12 /
2
+ * Buf Fixes
3
+ * Fix capistrano deployability [github.com/eric]
4
+
5
+ == 0.7.11 / 2008-11-14
6
+ * Bug Fixes
7
+ * Make notifications work inside lifecycle blocks
8
+
9
+ == 0.7.10 / 2008-11-13
10
+ * Major Enhancements
11
+ * Enable sending of arbitrary signals to a task or group via `god signal`
12
+ * Bug Fixes
13
+ * setup logging *after* loading a given config file when daemonized.
14
+ enables logging to the 'God.log_file' specified in a config file. [github.com/jnewland]
15
+ * New Conditions
16
+ * FileMtime < PollCondition - trigger on file mtime durations [github.com/jwilkins]
17
+ * New Contacts
18
+ * Twitter - allow messages to twitter [github.com/jwilkins]
19
+ * Campfire - send messages to 37signals' Campfire [github.com/hellvinz]
20
+ * Minor Enhancements
21
+ * Add watch log_cmd that can be reopened with STDOUT instead of a log file [github.com/jberkel]
22
+ * Added webhook output support [Martyn Loughran]
23
+
24
+ == 0.7.9 / 2008-08-06
25
+ * Major Enhancements
26
+ * Use a psuedo-priority queue for more efficient driver loop [Darrell Kresge]
27
+ * Bug Fixes
28
+ * Fix file_writable? when using chroot [github.com/eric]
29
+
30
+ == 0.7.8 / 2008-07-09
31
+ * Bug Fixes
32
+ * Catch all Exceptions from HttpResponseCode condition [github.com/rliebling]
33
+ * Don't error out if the process went away in SlashProcPoller [Kevin Clark]
34
+ * Correction of Task#handle_poll to prevent crash under event registration failure conditions. [github.com/raggi]
35
+ * Cleaned up logging of failed e-mail sends. [github.com/raggi]
36
+ * Listen on 127.0.0.1 when using God as a client. [github.com/halorgium]
37
+ * New Behaviors
38
+ * clean_unix_socket [github.com/gma]
39
+ * New Contacts
40
+ * jabber [github.com/jwulff]
41
+ * email via sendmail [github.com/monde]
42
+ * Minor Enhancements
43
+ * chroot support [github.com/eric]
44
+ * Added God.log_file for the main god log, overridden by command line option. [github.com/raggi]
45
+ * Print groups from `god status` command if present [github.com/pdlug]
46
+ * Allow headers to be specified for http_response_code condition [github.com/pdlug]
47
+
48
+ == 0.7.7 / 2008-06-17
49
+ * Bug Fixes
50
+ * Fix detection of proc file system [raggi]
51
+
52
+ == 0.7.6 / 2008-05-13
53
+ * Major Enhancements
54
+ * Implement System::Process methods for Linux based on /proc [Kevin Clark]
55
+ * Minor Enhancements
56
+ * Allowing directories to be loaded at start [Bert Goethals]
57
+ * Bug Fixes
58
+ * Don't leak events on error in the kqueue handler [Kevin Clark]
59
+
60
+ == 0.7.5 / 2008-02-21
61
+ * Bug Fixes
62
+ * Remove Ruby's Logger and replace with custom SimpleLogger to stop threaded leak
63
+
64
+ == 0.7.4 / 2008-02-18
65
+ * Bug Fixes
66
+ * Introduce local scope to prevent faulty optimization that causes memory to leak
67
+
68
+ == 0.7.3 / 2008-02-14
69
+ * Minor Enhancements
70
+ * Add --bleakhouse to make running diagnostics easier
71
+ * Bug Fixes
72
+ * Use ::Process.kill(0, ...) instead of `kill -0` [queso]
73
+ * Fix pid_file behavior in process-centric conditions so they work with tasks [matias]
74
+ * Redirect output of daemonized god to log file or /dev/null earlier [_eric]
75
+
76
+ == 0.7.2 / 2008-02-04
77
+ * Bug Fixes
78
+ * Start event system for CLI commands
79
+ * Up internal history to 100 lines per watch
80
+
81
+ == 0.7.1 / 2008-02-04
82
+ * Minor Enhancements
83
+ * Add --no-events option to completely disable events system
84
+
85
+ == 0.7.0 / 2008-02-01
86
+ * Minor Enhancements
87
+ * Better default pid_file_directory behavior
88
+ * Add --attach <pid> to specify that god should quit if <pid> exits
89
+ * Bug Fixes
90
+ * Handle ECONNRESET in HttpResponseCode
91
+
92
+ == 0.6.12 / 2008-01-31
93
+ * Minor Enhancements
94
+ * Allow log file output for non-daemonized god
95
+ * Switch to SIGTERM from SIGHUP for default lambda killer
96
+
97
+ == 0.6.11 / 2008-01-31
98
+ * Major Enhancements
99
+ * HUGE refactor of timer system to simplify scheduling
100
+ * Minor Enhancements
101
+ * Check for a truly working event system and disallow event conditions if none is present
102
+
103
+ == 0.6.10 / 2008-01-24
104
+ * Bug Fixes
105
+ * Fix ensure_stop nil pid no local variable bug
106
+
107
+ == 0.6.9 / 2008-01-23
108
+ * Bug Fixes
109
+ * Fix Timer condition dedup behavior
110
+
111
+ == 0.6.8 / 2008-01-23
112
+ * Minor Enhancements
113
+ * Warn if a command returns a non-zero exit code
114
+ * Ensure that stop command actually stops process
115
+
116
+ == 0.6.7 / 2008-01-22
117
+ * Minor Enhancements
118
+ * Add --no-syslog option to disable Syslog
119
+ * Allow contact redeclaration (dups are ignored)
120
+
121
+ == 0.6.6 / 2008-01-07
122
+ * Bug Fixes
123
+ * Redo Timer mutexing to reduce synchronization needs
124
+
125
+ == 0.6.5 / 2008-01-04
126
+ * Bug Fixes
127
+ * Fix Timer descheduling deadlock issue
128
+ * Change HttpResponseCode to use GET instead of HEAD
129
+
130
+ == 0.6.4 / 2008-12-31
131
+ * Bug Fixes
132
+ * Refactor Hub to clarify mutexing
133
+ * Eliminate potential iteration problem in Timer
134
+ * Add caching PID accessor to process to solve event deregistration failure
135
+
136
+ == 0.6.3 / 2007-12-18
137
+ * Minor Enhancements
138
+ * Output ProcessExits registration/deregistration info
139
+
140
+ == 0.6.2 / 2007-12-17
141
+ * Minor Enhancements
142
+ * Output registered PID for ProcessExits
143
+ * Bug Fixes
144
+ * Fix `god remove <group>` not working for unmonitored watches
145
+
146
+ == 0.6.1 / 2007-12-14
147
+
148
+ * Minor Enhancement
149
+ * Log when state change is complete
150
+
151
+ == 0.6.0 / 2007-12-4
152
+
153
+ * Minor Enhancement
154
+ * Move Syslog calls into God::Logger and clean up all calling code
155
+ * Remove god's pid file on user requested termination
156
+ * Better handling and cleanup of DRb server's unix domain socket
157
+ * Allow shorthand for requesting a god log
158
+ * Add `god check` to make it easier to diagnose event problems
159
+ * Refactor god binary into class/method structure
160
+ * Implement `god remove` to remove a Task altogether
161
+ * New Conditions
162
+ * DiskUsage < PollCondition - trigger if disk usage is above limit on mount [Rudy Desjardins]
163
+
164
+ == 0.5.2 / 2007-10-10
165
+
166
+ * Minor Enhancement
167
+ * Allow extra args to pass through to config file
168
+
169
+ == 0.5.1 / 2007-10-08
170
+
171
+ * Bug Fixes
172
+ * Rescue connection refused in http response code condition
173
+
174
+ == 0.5.0 / 2007-10-05
175
+
176
+ * Major Enhancements
177
+ * Implement lifecycle scoped metric to allow for cross-state conditions
178
+ * Add TriggerCondition for conditions that need info about state changes
179
+ * Implement notification system
180
+ * Add Tasks (a generalization of Watches) to do non-process related tasks
181
+ * Add example init.d file in GOD_INSTALL_DIR/init/god [scott becker]
182
+ * Add human readable info to conditions (and make low level log lines debug)
183
+ * Switch DRb to use a unix domain socket for security reasons
184
+ * Minor Enchancements
185
+ * Allow EventConditions to do transition overloading
186
+ * Report errors during god startup instead of failing silently
187
+ * Make transition block optional (default to Always condition returning true)
188
+ * Better usage info for `god --help`
189
+ * Explain what's going on when attempting to rebind to an in-use port
190
+ * Add -b option to god binary to auto-bind to an unused port
191
+ * Add `god quit` to stop god without stopping any tasks
192
+ * Make self-daemonized Watch commands synchronous (as they should be)
193
+ * Allow self-daemonized Watches to specify a log (could be useful)
194
+ * Check for existence of config file if specified
195
+ * Robustify `god load` and report errors back to the command issuer
196
+ * Warn when `god load` tries to set global options
197
+ * Add Configurable.clear method and make built-in conditions clear on entry
198
+ * New Conditions
199
+ * Flapping < TriggerCondition - trigger on state change
200
+ * HttpResponseCode < PollCondition - trigger on http response code or timeout (thx scott becker)
201
+ * New Contacts
202
+ * Email < Contact - notify via email (smtp)
203
+ * Bug Fixes
204
+ * Fix abort not aborting problem
205
+ * Fix -p option not working for god binary
206
+ * Fix God.init not accepting block (thx _eric)
207
+ * Fix SIGHUP ignore (thx _eric)
208
+ * Fix error reporting on `god --help` (don't error report a normal SystemExit)
209
+
210
+ == 0.4.3 / 2007-09-10
211
+ * Bug Fixes
212
+ * fix Process#alive? to not raise on no such file (affects `god terminate`)
213
+
214
+ == 0.4.2 / 2007-09-10
215
+ * Bug Fixes
216
+ * fix netlink buffer issue that prevented events on Linux from working consistently [dkresge]
217
+
218
+ == 0.4.1 / 2007-09-10
219
+ * Bug Fixes
220
+ * require 'stringio' for ruby 1.8.5
221
+
222
+ == 0.4.0 / 2007-09-10
223
+
224
+ * Major Enhancements
225
+ * Add the ability for conditions to override transition state (for exceptional cases)
226
+ * Implement dynamic load of config files while god is running (god load <filename>)
227
+ * Add ability to save auto-daemonized process output to a log file
228
+ * Add robust default stop lambda command for auto-daemonized processes (inspired by _eric)
229
+ * Add status command for god binary (shows status of each watch)
230
+ * Create proper logger with timestamps
231
+ * Add log command to god binary to get real time logs for a specific watch from a running god instance
232
+ * Add terminate command for god binary (stop god and all watches)
233
+ * Minor Enhancements
234
+ * Enforce validity of Watches
235
+ * Enforce that God.init is not called after a Watch
236
+ * Move pid_file_directory creation and validation to God.start
237
+ * Remove check for at least one Watch during startup (now that dynamic loading exists)
238
+ * New Conditions
239
+ * Tries < PollCondition - triggers after the specified number of tries
240
+ * Add :notify_when_flapping behavior to check for oscillation [kevinclark]
241
+ * Add :degrading_lambda condition. [kevinclark]
242
+ It uses a decaying interval (1/2 rate) for 3 cycles before failing.
243
+ * Bug Fixes
244
+ * Use exit!(0) instead of exit! in god binary to exit with code 0 (instead of default -1)
245
+ * Command line group control fixed
246
+ * Fix cross-thread return problem
247
+
248
+ == 0.3.0 / 2007-08-17
249
+
250
+ * Fix netlink header problem on Ubuntu Edgy [Dan Sully]
251
+ * Add uid/gid setting for processes [kevinclark]
252
+ * Add autostart flag for watches so they don't necessarily startup with god [kevinclark]
253
+ * Change command line call options for god binary to accommodate watch start/stop functionality
254
+ * Add individual start/stop/restart grace periods for finer grained control
255
+ * Change default DRb port to 17165 ('god'.to_i(32))
256
+ * Implement command line control to start/restart/stop/monitor/unmonitor watches/groups by name
257
+ * Watches can now belong to a group that can be controlled as a whole
258
+ * Allow god to be installed (sans events) on systems that don't support events
259
+ * Daemonize and handle PID files for non-daemonizing scripts [kevinclark]
260
+ * Fix simple mode lifecycle gap
261
+ * Remove necessity to specify pid_file for conditions
262
+ * Change config file to use God.init and God.watch directly instead of God.meddle block
263
+ * Move god binary command logic to main library
264
+ * Enhance god binary with better reporting
265
+ * Fix synchronization bug in Timer (reported by Srini Panguluri)
266
+ * Add Lambda condition for easy custom conditions [Mike Mintz]
267
+ * Add sugar for numerics (seconds, minutes, kilobytes, megabytes, percent, etc)
268
+ * Add optional PID and log file generation to god binary for daemon mode
269
+ * Add God.load to do glob enabled loading
270
+ * Add -V option to god binary for detailed version/build info
271
+
272
+ == 0.2.0 / 2007-07-18
273
+
274
+ * Rewrote innards to use a state and event based lifecycle
275
+ * Basic support for events via kqueue (bsd/darwin) and netlink/pec (linux) [kevinclark]
276
+ * Added advanced syntax (simple syntax calls advanced api underneath)
277
+ * Condition returns have changed meaning. With simple syntax, a true return activates block
278
+ * Updated http://god.rubyforge.org with updated simple config and new advanced config
279
+
280
+ == 0.1.0 / 2007-07-07
281
+
282
+ * 1 major enhancement
283
+ * Birthday!
284
+
data/Manifest.txt ADDED
@@ -0,0 +1,143 @@
1
+ Announce.txt
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ bin/god
7
+ examples/events.god
8
+ examples/gravatar.god
9
+ examples/single.god
10
+ ext/god/extconf.rb
11
+ ext/god/kqueue_handler.c
12
+ ext/god/netlink_handler.c
13
+ god.gemspec
14
+ ideas/execve/.DS_Store
15
+ ideas/execve/execve.c
16
+ ideas/execve/extconf.rb
17
+ ideas/execve/go.rb
18
+ ideas/future.god
19
+ init/god
20
+ lib/god.rb
21
+ lib/god/behavior.rb
22
+ lib/god/behaviors/clean_pid_file.rb
23
+ lib/god/behaviors/clean_unix_socket.rb
24
+ lib/god/behaviors/notify_when_flapping.rb
25
+ lib/god/cli/command.rb
26
+ lib/god/cli/run.rb
27
+ lib/god/cli/version.rb
28
+ lib/god/condition.rb
29
+ lib/god/conditions/always.rb
30
+ lib/god/conditions/complex.rb
31
+ lib/god/conditions/cpu_usage.rb
32
+ lib/god/conditions/degrading_lambda.rb
33
+ lib/god/conditions/disk_usage.rb
34
+ lib/god/conditions/file_mtime.rb
35
+ lib/god/conditions/flapping.rb
36
+ lib/god/conditions/http_response_code.rb
37
+ lib/god/conditions/lambda.rb
38
+ lib/god/conditions/memory_usage.rb
39
+ lib/god/conditions/process_exits.rb
40
+ lib/god/conditions/process_running.rb
41
+ lib/god/conditions/simple_response.rb
42
+ lib/god/conditions/tries.rb
43
+ lib/god/configurable.rb
44
+ lib/god/contact.rb
45
+ lib/god/contacts/campfire.rb
46
+ lib/god/contacts/email.rb
47
+ lib/god/contacts/jabber.rb
48
+ lib/god/contacts/twitter.rb
49
+ lib/god/contacts/webhook.rb
50
+ lib/god/dependency_graph.rb
51
+ lib/god/diagnostics.rb
52
+ lib/god/driver.rb
53
+ lib/god/errors.rb
54
+ lib/god/event_handler.rb
55
+ lib/god/event_handlers/dummy_handler.rb
56
+ lib/god/event_handlers/kqueue_handler.rb
57
+ lib/god/event_handlers/netlink_handler.rb
58
+ lib/god/logger.rb
59
+ lib/god/metric.rb
60
+ lib/god/process.rb
61
+ lib/god/registry.rb
62
+ lib/god/simple_logger.rb
63
+ lib/god/socket.rb
64
+ lib/god/sugar.rb
65
+ lib/god/system/portable_poller.rb
66
+ lib/god/system/process.rb
67
+ lib/god/system/slash_proc_poller.rb
68
+ lib/god/task.rb
69
+ lib/god/timeline.rb
70
+ lib/god/trigger.rb
71
+ lib/god/watch.rb
72
+ service.rb
73
+ site/images/banner.jpg
74
+ site/images/bg.gif
75
+ site/images/bg_grey.gif
76
+ site/images/bullet.jpg
77
+ site/images/corner_green.gif
78
+ site/images/corner_green.psd
79
+ site/images/corner_pink.gif
80
+ site/images/god_logo1.gif
81
+ site/images/header_bg.gif
82
+ site/images/header_bg.jpg
83
+ site/images/red_dot.gif
84
+ site/images/top_bg.gif
85
+ site/index.html
86
+ site/install.html
87
+ site/javascripts/code_highlighter.js
88
+ site/javascripts/ruby.js
89
+ site/stylesheets/layout.css
90
+ test.god
91
+ test/configs/child_events/child_events.god
92
+ test/configs/child_events/simple_server.rb
93
+ test/configs/child_polls/child_polls.god
94
+ test/configs/child_polls/simple_server.rb
95
+ test/configs/complex/complex.god
96
+ test/configs/complex/simple_server.rb
97
+ test/configs/contact/contact.god
98
+ test/configs/contact/simple_server.rb
99
+ test/configs/daemon_events/daemon_events.god
100
+ test/configs/daemon_events/simple_server.rb
101
+ test/configs/daemon_events/simple_server_stop.rb
102
+ test/configs/daemon_polls/daemon_polls.god
103
+ test/configs/daemon_polls/simple_server.rb
104
+ test/configs/degrading_lambda/degrading_lambda.god
105
+ test/configs/degrading_lambda/tcp_server.rb
106
+ test/configs/lifecycle/lifecycle.god
107
+ test/configs/matias/matias.god
108
+ test/configs/real.rb
109
+ test/configs/running_load/running_load.god
110
+ test/configs/stress/simple_server.rb
111
+ test/configs/stress/stress.god
112
+ test/configs/task/logs/.placeholder
113
+ test/configs/task/task.god
114
+ test/configs/test.rb
115
+ test/helper.rb
116
+ test/suite.rb
117
+ test/test_behavior.rb
118
+ test/test_campfire.rb
119
+ test/test_condition.rb
120
+ test/test_conditions_disk_usage.rb
121
+ test/test_conditions_http_response_code.rb
122
+ test/test_conditions_process_running.rb
123
+ test/test_conditions_tries.rb
124
+ test/test_contact.rb
125
+ test/test_dependency_graph.rb
126
+ test/test_driver.rb
127
+ test/test_email.rb
128
+ test/test_event_handler.rb
129
+ test/test_god.rb
130
+ test/test_handlers_kqueue_handler.rb
131
+ test/test_logger.rb
132
+ test/test_metric.rb
133
+ test/test_process.rb
134
+ test/test_registry.rb
135
+ test/test_socket.rb
136
+ test/test_sugar.rb
137
+ test/test_system_portable_poller.rb
138
+ test/test_system_process.rb
139
+ test/test_task.rb
140
+ test/test_timeline.rb
141
+ test/test_trigger.rb
142
+ test/test_watch.rb
143
+ test/test_webhook.rb