epi 0.0.1 → 0.1.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.
- checksums.yaml +4 -4
- data/bin/epi +1 -1
- data/lib/epi/cli/command.rb +7 -0
- data/lib/epi/cli/commands/concerns/daemon.rb +33 -0
- data/lib/epi/cli/commands/config.rb +11 -3
- data/lib/epi/cli/commands/daemon.rb +14 -0
- data/lib/epi/cli/commands/help.rb +0 -0
- data/lib/epi/cli/commands/job.rb +1 -1
- data/lib/epi/cli/commands/restart.rb +16 -0
- data/lib/epi/cli/commands/start.rb +15 -0
- data/lib/epi/cli/commands/status.rb +6 -2
- data/lib/epi/cli/commands/stop.rb +16 -0
- data/lib/epi/cli.rb +1 -1
- data/lib/epi/connection.rb +7 -0
- data/lib/epi/core_ext/inflector.rb +1 -1
- data/lib/epi/daemon/receiver.rb +37 -0
- data/lib/epi/{server → daemon}/responder.rb +14 -5
- data/lib/epi/{server → daemon}/responders/config.rb +14 -2
- data/lib/epi/{server → daemon}/responders/job.rb +5 -6
- data/lib/epi/{server → daemon}/responders/shutdown.rb +1 -1
- data/lib/epi/daemon/responders/start.rb +19 -0
- data/lib/epi/{server → daemon}/responders/status.rb +4 -2
- data/lib/epi/daemon/responders/stop_all.rb +20 -0
- data/lib/epi/daemon/sender.rb +74 -0
- data/lib/epi/{server.rb → daemon.rb} +26 -27
- data/lib/epi/data.rb +4 -5
- data/lib/epi/job.rb +60 -2
- data/lib/epi/job_description.rb +6 -8
- data/lib/epi/jobs.rb +30 -2
- data/lib/epi/launch.rb +1 -1
- data/lib/epi/logging.rb +33 -0
- data/lib/epi/process_status.rb +1 -1
- data/lib/epi/running_process.rb +21 -3
- data/lib/epi/trigger.rb +53 -0
- data/lib/epi/triggers/concerns/comparison.rb +43 -0
- data/lib/epi/triggers/memory.rb +16 -0
- data/lib/epi/triggers/touch.rb +37 -0
- data/lib/epi/triggers/uptime.rb +12 -0
- data/lib/epi/version.rb +1 -1
- data/lib/epi.rb +4 -22
- metadata +26 -26
- data/lib/epi/cli/commands/server.rb +0 -38
- data/lib/epi/server/receiver.rb +0 -46
- data/lib/epi/server/responders/command.rb +0 -15
- data/lib/epi/server/sender.rb +0 -64
data/lib/epi/server/receiver.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'eventmachine'
|
2
|
-
require 'bson'
|
3
|
-
|
4
|
-
module Epi
|
5
|
-
module Server
|
6
|
-
class Receiver < EventMachine::Connection
|
7
|
-
|
8
|
-
def logger
|
9
|
-
Epi.logger
|
10
|
-
end
|
11
|
-
|
12
|
-
def receive_data(data)
|
13
|
-
response = begin
|
14
|
-
data = Hash.from_bson StringIO.new data
|
15
|
-
logger.debug "Received message of type '#{data['type']}'"
|
16
|
-
{result: Responder.run(self, data.delete('type').to_s, data)}
|
17
|
-
rescue Exceptions::Shutdown
|
18
|
-
self.should_shut_down = true
|
19
|
-
{result: 'Server is shutting down'}
|
20
|
-
rescue => error
|
21
|
-
{error: {
|
22
|
-
class: error.class.name,
|
23
|
-
message: error.message,
|
24
|
-
backtrace: error.backtrace
|
25
|
-
}}
|
26
|
-
end
|
27
|
-
response[:complete] = true
|
28
|
-
send_data response.to_bson
|
29
|
-
Server.shutdown if should_shut_down
|
30
|
-
end
|
31
|
-
|
32
|
-
def puts(text)
|
33
|
-
data = {
|
34
|
-
result: "#{text}\n",
|
35
|
-
complete: false
|
36
|
-
}
|
37
|
-
send_data data.to_bson
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
attr_accessor :should_shut_down
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
data/lib/epi/server/sender.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'eventmachine'
|
2
|
-
require 'bson'
|
3
|
-
|
4
|
-
module Epi
|
5
|
-
module Server
|
6
|
-
class Sender < EventMachine::Connection
|
7
|
-
include Exceptions
|
8
|
-
|
9
|
-
# Send a message to the Epi server
|
10
|
-
#
|
11
|
-
# @example Get Epi's status
|
12
|
-
# Sender.send command: {command: 'status', arguments: []}
|
13
|
-
#
|
14
|
-
# @example Shut down the server
|
15
|
-
# Sender.send :shutdown
|
16
|
-
#
|
17
|
-
# @param what [Hash|Symbol] Either a symbol being the message type, or a hash
|
18
|
-
# with a single key (a symbol) being the message type, and value (a hash) being the message.
|
19
|
-
def self.send(what)
|
20
|
-
|
21
|
-
raise ArgumentError, 'Expected a hash with one key (a symbol) and value (a hash)' unless
|
22
|
-
Symbol === what ||
|
23
|
-
(Hash === what && what.count == 1 && Symbol === what.keys.first && Hash === what.values.first)
|
24
|
-
|
25
|
-
data = case what
|
26
|
-
when Symbol then {type: what}
|
27
|
-
when Hash then what.values.first.merge(type: what.keys.first)
|
28
|
-
else nil
|
29
|
-
end
|
30
|
-
|
31
|
-
EventMachine.connect Server.socket_path.to_s, Sender, data
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
def initialize(data)
|
36
|
-
send_data data.to_bson
|
37
|
-
end
|
38
|
-
|
39
|
-
def receive_data(data)
|
40
|
-
data = Hash.from_bson StringIO.new data
|
41
|
-
|
42
|
-
if data['result']
|
43
|
-
puts data['result']
|
44
|
-
|
45
|
-
elsif data['error']
|
46
|
-
error = data['error']
|
47
|
-
if error['class'] == Fatal.name
|
48
|
-
STDERR << error['message']
|
49
|
-
STDERR << "\n"
|
50
|
-
else
|
51
|
-
puts "#{error['class']}: #{error['message']}"
|
52
|
-
error['backtrace'].each { |x| puts ' ' << x }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
if data['complete']
|
57
|
-
close_connection
|
58
|
-
EventMachine.stop_event_loop
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|