invoker 1.5.1 → 1.5.3
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/invoker.gemspec +1 -1
- data/lib/invoker/cli.rb +5 -0
- data/lib/invoker/command_worker.rb +2 -2
- data/lib/invoker/commander.rb +5 -1
- data/lib/invoker/parsers/config.rb +17 -2
- data/lib/invoker/power/http_response.rb +1 -1
- data/lib/invoker/process_manager.rb +5 -0
- data/lib/invoker/version.rb +1 -1
- data/spec/invoker/commander_spec.rb +4 -4
- data/spec/invoker/config_spec.rb +45 -0
- metadata +33 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1da2ee349b145013878352cca28cc1de9ed13c5
|
4
|
+
data.tar.gz: 066597992a678fa848f9d6d9e36798272141ff7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51bd2c4294e3d7b97dfe909f1289b4d62b170db3171c4cee96c1d0848df98d0ab286835f7d8de9a321c2da3e4695aea3e1010a25b308228071f981c2f4dc51ad
|
7
|
+
data.tar.gz: e265b1e4452c688517aa5a648a5fd81fc34c3a6a395061e7c486723318d6031018778fe3adcf76219dc8771c0b4f73168491ef86b4229d63b3fd8d26d3058f82
|
data/invoker.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.require_paths = ["lib"]
|
27
27
|
s.summary = %q{Something small for Process management}
|
28
28
|
s.add_dependency("thor", "~> 0.19")
|
29
|
-
s.add_dependency("rainbow", "~> 2.0")
|
29
|
+
s.add_dependency("rainbow", "~> 2.1.0")
|
30
30
|
s.add_dependency("iniparse", "~> 1.1")
|
31
31
|
s.add_dependency("formatador", "~> 0.2")
|
32
32
|
s.add_dependency("eventmachine", "~> 1.0.4")
|
data/lib/invoker/cli.rb
CHANGED
@@ -65,6 +65,11 @@ module Invoker
|
|
65
65
|
tailer.run
|
66
66
|
end
|
67
67
|
|
68
|
+
desc "log process1", "Get log of particular process"
|
69
|
+
def log(process_name)
|
70
|
+
system("egrep -a '^#{process_name}' #{Invoker.daemon.log_file}")
|
71
|
+
end
|
72
|
+
|
68
73
|
desc "reload process", "Reload a process managed by Invoker"
|
69
74
|
option :signal,
|
70
75
|
banner: "Signal to send for killing the process, default is SIGINT",
|
@@ -26,13 +26,13 @@ module Invoker
|
|
26
26
|
def receive_line(line)
|
27
27
|
tail_watchers = Invoker.tail_watchers[@command_label]
|
28
28
|
color_line = "#{@command_label.color(color)} : #{line}"
|
29
|
+
plain_line = "#{@command_label} : #{line}"
|
30
|
+
Invoker::Logger.puts plain_line
|
29
31
|
if tail_watchers && !tail_watchers.empty?
|
30
32
|
json_encoded_tail_response = tail_response(color_line)
|
31
33
|
if json_encoded_tail_response
|
32
34
|
tail_watchers.each { |tail_socket| send_data(tail_socket, json_encoded_tail_response) }
|
33
35
|
end
|
34
|
-
else
|
35
|
-
Invoker::Logger.puts color_line
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
data/lib/invoker/commander.rb
CHANGED
@@ -37,7 +37,11 @@ module Invoker
|
|
37
37
|
unix_server_thread = Thread.new { Invoker::IPC::Server.new }
|
38
38
|
@thread_group.add(unix_server_thread)
|
39
39
|
process_manager.run_power_server
|
40
|
-
Invoker.config.autorunnable_processes.each
|
40
|
+
Invoker.config.autorunnable_processes.each do |process_info|
|
41
|
+
process_manager.start_process(process_info)
|
42
|
+
Logger.puts("Starting process - #{process_info.label} waiting for #{process_info.sleep_duration} seconds...")
|
43
|
+
sleep(process_info.sleep_duration)
|
44
|
+
end
|
41
45
|
at_exit { process_manager.kill_workers }
|
42
46
|
start_event_loop
|
43
47
|
end
|
@@ -42,7 +42,8 @@ module Invoker
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def autorunnable_processes
|
45
|
-
processes.reject(&:disable_autorun)
|
45
|
+
process_to_run = processes.reject(&:disable_autorun)
|
46
|
+
process_to_run.sort_by { |process| process.index }
|
46
47
|
end
|
47
48
|
|
48
49
|
def process(label)
|
@@ -52,7 +53,7 @@ module Invoker
|
|
52
53
|
private
|
53
54
|
|
54
55
|
def autodetect_config_file
|
55
|
-
Dir.glob("{invoker.ini,Procfile}").first
|
56
|
+
Dir.glob("{invoker.ini,Procfile.dev,Procfile}").first
|
56
57
|
end
|
57
58
|
|
58
59
|
def invalid_config_file?
|
@@ -123,6 +124,20 @@ module Invoker
|
|
123
124
|
}
|
124
125
|
pconfig['port'] = section['port'] if section['port']
|
125
126
|
pconfig['disable_autorun'] = section['disable_autorun'] if section['disable_autorun']
|
127
|
+
pconfig['index'] = section['index'].to_i if section['index']
|
128
|
+
section_index = pconfig['index'].to_i
|
129
|
+
if section_index
|
130
|
+
pconfig['index'] = section_index
|
131
|
+
else
|
132
|
+
pconfig['index'] = 0
|
133
|
+
end
|
134
|
+
|
135
|
+
sleep_duration = section['sleep'].to_i
|
136
|
+
if sleep_duration > 0
|
137
|
+
pconfig['sleep_duration'] = sleep_duration
|
138
|
+
else
|
139
|
+
pconfig['sleep_duration'] = 1
|
140
|
+
end
|
126
141
|
|
127
142
|
OpenStruct.new(pconfig)
|
128
143
|
end
|
@@ -88,6 +88,11 @@ module Invoker
|
|
88
88
|
|
89
89
|
def load_env(directory = nil)
|
90
90
|
directory ||= ENV['PWD']
|
91
|
+
|
92
|
+
if !directory || directory.empty? || !Dir.exist?(directory)
|
93
|
+
return {}
|
94
|
+
end
|
95
|
+
|
91
96
|
default_env = File.join(directory, '.env')
|
92
97
|
local_env = File.join(directory, '.env.local')
|
93
98
|
env = {}
|
data/lib/invoker/version.rb
CHANGED
@@ -27,7 +27,7 @@ describe "Invoker::Commander" do
|
|
27
27
|
describe "#start_process" do
|
28
28
|
describe "when not daemonized" do
|
29
29
|
before do
|
30
|
-
processes = [OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'])]
|
30
|
+
processes = [OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'], :sleep_duration => 2)]
|
31
31
|
Invoker.config.stubs(:processes).returns(processes)
|
32
32
|
Invoker.config.stubs(:autorunnable_processes).returns(processes)
|
33
33
|
Invoker.stubs(:can_run_balancer?).returns(false)
|
@@ -61,7 +61,7 @@ describe "Invoker::Commander" do
|
|
61
61
|
|
62
62
|
describe "when daemonized" do
|
63
63
|
before do
|
64
|
-
processes = [OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'])]
|
64
|
+
processes = [OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'], :sleep_duration => 2)]
|
65
65
|
Invoker.config.stubs(:processes).returns(processes)
|
66
66
|
Invoker.config.stubs(:autorunnable_processes).returns(processes)
|
67
67
|
Invoker.stubs(:can_run_balancer?).returns(false)
|
@@ -102,8 +102,8 @@ describe "Invoker::Commander" do
|
|
102
102
|
context 'autorun is disabled for a process' do
|
103
103
|
before do
|
104
104
|
@processes = [
|
105
|
-
OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME']),
|
106
|
-
OpenStruct.new(:label => "panda", :cmd => "panda_command", :dir => ENV['HOME'], :disable_autorun => true)
|
105
|
+
OpenStruct.new(:label => "foobar", :cmd => "foobar_command", :dir => ENV['HOME'], :sleep_duration => 2),
|
106
|
+
OpenStruct.new(:label => "panda", :cmd => "panda_command", :dir => ENV['HOME'], :disable_autorun => true, :sleep_duration => 2)
|
107
107
|
]
|
108
108
|
Invoker.config.stubs(:processes).returns(@processes)
|
109
109
|
Invoker.config.stubs(:autorunnable_processes).returns([@processes.first])
|
data/spec/invoker/config_spec.rb
CHANGED
@@ -216,6 +216,47 @@ command = bundle exec rails s -p $PORT
|
|
216
216
|
file.unlink()
|
217
217
|
end
|
218
218
|
end
|
219
|
+
|
220
|
+
it "returns a list of processes that can by index" do
|
221
|
+
begin
|
222
|
+
file = Tempfile.new(["config", ".ini"])
|
223
|
+
config_data =<<-EOD
|
224
|
+
[postgres]
|
225
|
+
command = postgres -D /usr/local/var/postgres
|
226
|
+
index = 2
|
227
|
+
sleep = 5
|
228
|
+
|
229
|
+
[redis]
|
230
|
+
command = redis-server /usr/local/etc/redis.conf
|
231
|
+
disable_autorun = true
|
232
|
+
index = 3
|
233
|
+
|
234
|
+
[memcached]
|
235
|
+
command = /usr/local/opt/memcached/bin/memcached
|
236
|
+
disable_autorun = false
|
237
|
+
index = 5
|
238
|
+
|
239
|
+
[panda-api]
|
240
|
+
command = bundle exec rails s
|
241
|
+
disable_autorun = true
|
242
|
+
index = 4
|
243
|
+
|
244
|
+
[panda-auth]
|
245
|
+
command = bundle exec rails s -p $PORT
|
246
|
+
index = 1
|
247
|
+
EOD
|
248
|
+
file.write(config_data)
|
249
|
+
file.close
|
250
|
+
|
251
|
+
config = Invoker::Parsers::Config.new(file.path, 9000)
|
252
|
+
processes = config.autorunnable_processes
|
253
|
+
expect(processes.map(&:label)).to eq(['panda-auth', 'postgres', 'memcached'])
|
254
|
+
expect(processes[0].sleep_duration).to eq(1)
|
255
|
+
expect(processes[1].sleep_duration).to eq(5)
|
256
|
+
ensure
|
257
|
+
file.unlink()
|
258
|
+
end
|
259
|
+
end
|
219
260
|
end
|
220
261
|
|
221
262
|
describe "global config file" do
|
@@ -299,6 +340,10 @@ some_other_process: some_other_command
|
|
299
340
|
|
300
341
|
config = Invoker::Parsers::Config.new(nil, 9000)
|
301
342
|
expect(config.process("some_process").cmd).to eq("some_command")
|
343
|
+
processes = config.autorunnable_processes
|
344
|
+
process_1 = processes[0]
|
345
|
+
expect(process_1.sleep_duration).to eq(1)
|
346
|
+
expect(process_1.index).to eq(0)
|
302
347
|
ensure
|
303
348
|
File.delete(invoker_ini)
|
304
349
|
File.delete(procfile)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invoker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hemant Kumar
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-05-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 2.1.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 2.1.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: iniparse
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -358,4 +358,32 @@ rubygems_version: 2.5.1
|
|
358
358
|
signing_key:
|
359
359
|
specification_version: 4
|
360
360
|
summary: Something small for Process management
|
361
|
-
test_files:
|
361
|
+
test_files:
|
362
|
+
- spec/invoker/cli/pinger_spec.rb
|
363
|
+
- spec/invoker/cli/tail_watcher_spec.rb
|
364
|
+
- spec/invoker/cli_spec.rb
|
365
|
+
- spec/invoker/command_worker_spec.rb
|
366
|
+
- spec/invoker/commander_spec.rb
|
367
|
+
- spec/invoker/config_spec.rb
|
368
|
+
- spec/invoker/daemon_spec.rb
|
369
|
+
- spec/invoker/event/manager_spec.rb
|
370
|
+
- spec/invoker/invoker_spec.rb
|
371
|
+
- spec/invoker/ipc/client_handler_spec.rb
|
372
|
+
- spec/invoker/ipc/dns_check_command_spec.rb
|
373
|
+
- spec/invoker/ipc/message/list_response_spec.rb
|
374
|
+
- spec/invoker/ipc/message_spec.rb
|
375
|
+
- spec/invoker/ipc/unix_client_spec.rb
|
376
|
+
- spec/invoker/power/balancer_spec.rb
|
377
|
+
- spec/invoker/power/config_spec.rb
|
378
|
+
- spec/invoker/power/http_parser_spec.rb
|
379
|
+
- spec/invoker/power/http_response_spec.rb
|
380
|
+
- spec/invoker/power/pf_migrate_spec.rb
|
381
|
+
- spec/invoker/power/port_finder_spec.rb
|
382
|
+
- spec/invoker/power/setup/linux_setup_spec.rb
|
383
|
+
- spec/invoker/power/setup/osx_setup_spec.rb
|
384
|
+
- spec/invoker/power/setup_spec.rb
|
385
|
+
- spec/invoker/power/url_rewriter_spec.rb
|
386
|
+
- spec/invoker/power/web_sockets_spec.rb
|
387
|
+
- spec/invoker/process_manager_spec.rb
|
388
|
+
- spec/invoker/reactor_spec.rb
|
389
|
+
- spec/spec_helper.rb
|