right_chimp 2.1.28 → 2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +4 -0
- data/Gemfile.lock +16 -11
- data/chimp.gemspec +1 -1
- data/lib/right_chimp/Chimp.rb +5 -5
- data/lib/right_chimp/daemon/{ChimpDaemon.rb → chimp_daemon.rb} +6 -7
- data/lib/right_chimp/daemon/{ChimpDaemonClient.rb → chimp_daemon_client.rb} +0 -0
- data/lib/right_chimp/exec/{ExecArray.rb → exec_array.rb} +5 -7
- data/lib/right_chimp/exec/{ExecCallback.rb → exec_callback.rb} +1 -1
- data/lib/right_chimp/exec/{ExecNoop.rb → exec_noop.rb} +0 -0
- data/lib/right_chimp/exec/{ExecReport.rb → exec_report.rb} +0 -0
- data/lib/right_chimp/exec/{ExecRightScript.rb → exec_rightscript.rb} +2 -3
- data/lib/right_chimp/exec/{ExecSSH.rb → exec_ssh.rb} +0 -0
- data/lib/right_chimp/{IDManager.rb → id_manager.rb} +0 -0
- data/lib/right_chimp/queue/{ChimpQueue.rb → chimp_queue.rb} +0 -0
- data/lib/right_chimp/queue/{ExecutionGroup.rb → execution_group.rb} +0 -0
- data/lib/right_chimp/queue/{QueueWorker.rb → queue_worker.rb} +0 -0
- data/lib/right_chimp/resources/Executable.rb +16 -15
- data/lib/right_chimp/version.rb +1 -1
- data/lib/right_chimp.rb +23 -22
- data/spec/chimp_daemon_client_spec.rb +82 -0
- data/spec/chimp_daemon_spec.rb +55 -0
- data/spec/exec_righscript_spec.rb +41 -0
- data/spec/spec_helper.rb +7 -0
- metadata +26 -34
- data/spec/spec_chimp.rb +0 -20
- data/spec/spec_chimp_commandline.rb +0 -55
- data/spec/spec_chimpd.rb +0 -33
- data/spec/spec_chimpd_client.rb +0 -44
- data/spec/spec_execution_group.rb +0 -135
- data/spec/spec_queue.rb +0 -37
- data/spec/spec_queue_worker.rb +0 -30
- data/spec/spec_selection.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: deb10edd310b0e400ce12bafcc0592b52928cdb6
|
4
|
+
data.tar.gz: d9a8ede4dfd0778475dbfcc26a38cacf55ada64b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d74afffc79fc7acc94041edd181e8b8f2f2cc60b7747e00004d6814b0edb556d0acd01c6613457c2efc917eccac03107171b3a0bbb7d721b33d9862784193ff
|
7
|
+
data.tar.gz: 1c2d8eeb42cb8e14245d767500cbd4dbff06b88e3a84e798ec84a3861d97639375fa6e08e838ac6086169f1a049601f3d6a1508aad014a9dade01e31be41e829
|
data/CHANGES
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
right_chimp (2.
|
4
|
+
right_chimp (2.2)
|
5
5
|
highline (~> 1.7.2)
|
6
6
|
nokogiri (~> 1.6.7.1)
|
7
7
|
progressbar (~> 0.11.0)
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
debug_inspector (>= 0.0.1)
|
16
16
|
coderay (1.1.1)
|
17
17
|
debug_inspector (0.0.2)
|
18
|
-
diff-lcs (1.
|
18
|
+
diff-lcs (1.2.5)
|
19
19
|
domain_name (0.5.20160826)
|
20
20
|
unf (>= 0.0.5, < 1.0.0)
|
21
21
|
highline (1.7.8)
|
@@ -45,14 +45,19 @@ GEM
|
|
45
45
|
json (~> 1.0)
|
46
46
|
mime-types (~> 1.0)
|
47
47
|
rest-client (~> 1.6)
|
48
|
-
rspec (
|
49
|
-
rspec-core (~>
|
50
|
-
rspec-expectations (~>
|
51
|
-
rspec-mocks (~>
|
52
|
-
rspec-core (
|
53
|
-
|
54
|
-
|
55
|
-
|
48
|
+
rspec (3.5.0)
|
49
|
+
rspec-core (~> 3.5.0)
|
50
|
+
rspec-expectations (~> 3.5.0)
|
51
|
+
rspec-mocks (~> 3.5.0)
|
52
|
+
rspec-core (3.5.4)
|
53
|
+
rspec-support (~> 3.5.0)
|
54
|
+
rspec-expectations (3.5.0)
|
55
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
56
|
+
rspec-support (~> 3.5.0)
|
57
|
+
rspec-mocks (3.5.0)
|
58
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
59
|
+
rspec-support (~> 3.5.0)
|
60
|
+
rspec-support (3.5.0)
|
56
61
|
slop (3.6.0)
|
57
62
|
unf (0.1.4)
|
58
63
|
unf_ext
|
@@ -65,7 +70,7 @@ DEPENDENCIES
|
|
65
70
|
pry
|
66
71
|
pry-stack_explorer
|
67
72
|
right_chimp!
|
68
|
-
rspec
|
73
|
+
rspec
|
69
74
|
|
70
75
|
BUNDLED WITH
|
71
76
|
1.13.2
|
data/chimp.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_dependency 'right_api_client', '> 1.5'
|
25
25
|
s.add_dependency 'highline', '~> 1.7.2'
|
26
26
|
|
27
|
-
s.add_development_dependency 'rspec'
|
27
|
+
s.add_development_dependency 'rspec'
|
28
28
|
s.add_development_dependency 'pry'
|
29
29
|
s.add_development_dependency 'pry-stack_explorer'
|
30
30
|
|
data/lib/right_chimp/Chimp.rb
CHANGED
@@ -128,13 +128,13 @@ module Chimp
|
|
128
128
|
# Send the command to chimpd for execution
|
129
129
|
#
|
130
130
|
if @use_chimpd
|
131
|
-
timestamp=Time.now.to_i
|
132
|
-
length=6
|
133
|
-
self.job_uuid = (36**(length-1) + rand(36**length - 36**(length-1))).to_s(36)
|
134
|
-
ChimpDaemonClient.submit(@chimpd_host, @chimpd_port, self,
|
131
|
+
timestamp = Time.now.to_i
|
132
|
+
length = 6
|
133
|
+
self.job_uuid = (36**(length - 1) + rand(36**length - 36**(length - 1))).to_s(36)
|
134
|
+
ChimpDaemonClient.submit(@chimpd_host, @chimpd_port, self, job_uuid)
|
135
135
|
exit
|
136
136
|
else
|
137
|
-
#Connect to the Api
|
137
|
+
# Connect to the Api
|
138
138
|
Connection.instance
|
139
139
|
if @interactive
|
140
140
|
Connection.connect
|
@@ -9,7 +9,7 @@ module Chimp
|
|
9
9
|
|
10
10
|
attr_accessor :verbose, :debug, :port, :concurrency, :delay, :retry_count,
|
11
11
|
:dry_run, :logfile, :chimp_queue, :proc_counter, :semaphore,
|
12
|
-
:bind_address
|
12
|
+
:bind_address, :server
|
13
13
|
attr_reader :queue, :running
|
14
14
|
|
15
15
|
include Singleton
|
@@ -18,7 +18,7 @@ module Chimp
|
|
18
18
|
@verbose = false
|
19
19
|
@debug = false
|
20
20
|
@port = 9055
|
21
|
-
@bind_address =
|
21
|
+
@bind_address = 'localhost'
|
22
22
|
@concurrency = 50
|
23
23
|
@delay = 0
|
24
24
|
@retry_count = 0
|
@@ -28,9 +28,9 @@ module Chimp
|
|
28
28
|
@chimp_queue = Queue.new
|
29
29
|
@semaphore = Mutex.new
|
30
30
|
|
31
|
-
@proc_counter= 0
|
31
|
+
@proc_counter = 0
|
32
32
|
|
33
|
-
#Connect to the API
|
33
|
+
# Connect to the API
|
34
34
|
Connection.instance
|
35
35
|
end
|
36
36
|
|
@@ -41,8 +41,8 @@ module Chimp
|
|
41
41
|
install_signal_handlers
|
42
42
|
parse_command_line
|
43
43
|
|
44
|
-
#puts "chimpd #{VERSION} launching with #{@concurrency} workers"
|
45
|
-
|
44
|
+
# puts "chimpd #{VERSION} launching with #{@concurrency} workers"
|
45
|
+
Log.info 'Loading... please wait'
|
46
46
|
spawn_queue_runner
|
47
47
|
spawn_webserver
|
48
48
|
spawn_chimpd_submission_processor
|
@@ -389,7 +389,6 @@ module Chimp
|
|
389
389
|
|
390
390
|
if filter == 'create'
|
391
391
|
ChimpQueue.instance.create_group(group_name, payload['type'], payload['concurrency'])
|
392
|
-
|
393
392
|
elsif filter == 'retry'
|
394
393
|
group = ChimpQueue[group_name.to_sym]
|
395
394
|
raise WEBrick::HTTPStatus::NotFound, "Group not found" unless group
|
File without changes
|
@@ -5,11 +5,10 @@ module Chimp
|
|
5
5
|
class ExecArray < Executor
|
6
6
|
def run
|
7
7
|
run_with_retry do
|
8
|
-
audit_entry = []
|
9
8
|
options = @inputs
|
10
9
|
|
11
10
|
if @timeout < 300
|
12
|
-
Log.error
|
11
|
+
Log.error 'timeout was less than 5 minutes! resetting to 5 minutes'
|
13
12
|
@timeout = 300
|
14
13
|
end
|
15
14
|
|
@@ -17,7 +16,7 @@ module Chimp
|
|
17
16
|
|
18
17
|
if audit_entry
|
19
18
|
audit_entry.each do |a|
|
20
|
-
a.wait_for_completed(
|
19
|
+
a.wait_for_completed('no audit link available', @timeout)
|
21
20
|
end
|
22
21
|
else
|
23
22
|
Log.warn "No audit entries returned for job_id=#{@job_id}"
|
@@ -26,16 +25,15 @@ module Chimp
|
|
26
25
|
end
|
27
26
|
|
28
27
|
def describe_work
|
29
|
-
|
28
|
+
"ExecArray job_id=#{@job_id} script=\"#{@exec['right_script']['name']}\" server=\"#{@server['nickname']}\""
|
30
29
|
end
|
31
30
|
|
32
31
|
def info
|
33
|
-
|
32
|
+
@exec['right_script']['name']
|
34
33
|
end
|
35
34
|
|
36
35
|
def target
|
37
|
-
|
36
|
+
@server['nickname']
|
38
37
|
end
|
39
|
-
|
40
38
|
end
|
41
39
|
end
|
File without changes
|
File without changes
|
@@ -2,8 +2,8 @@
|
|
2
2
|
# Run a RightScript
|
3
3
|
#
|
4
4
|
module Chimp
|
5
|
+
# Class that describes the execution for a rightscript
|
5
6
|
class ExecRightScript < Executor
|
6
|
-
|
7
7
|
attr_accessor :audit_entry_data, :audit_entry_url
|
8
8
|
|
9
9
|
def run
|
@@ -15,7 +15,7 @@ module Chimp
|
|
15
15
|
end
|
16
16
|
|
17
17
|
run_with_retry do
|
18
|
-
task=Task.new
|
18
|
+
task = Task.new
|
19
19
|
task.tasker = @server.run_executable(@exec, options)
|
20
20
|
@audit_entry_url = task.friendly_url
|
21
21
|
task.wait_for_state('completed', @timeout)
|
@@ -36,6 +36,5 @@ module Chimp
|
|
36
36
|
def target
|
37
37
|
@server.nickname
|
38
38
|
end
|
39
|
-
|
40
39
|
end
|
41
40
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -10,26 +10,27 @@ module Chimp
|
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
@params = {
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
13
|
+
'position' => 5,
|
14
|
+
'right_script' => {
|
15
|
+
'created_at' => '',
|
16
|
+
'href' => 'dummy_href',
|
17
|
+
'updated_at' => '',
|
18
|
+
'version' => 4,
|
19
|
+
'is_head_version' => false,
|
20
|
+
'script' => '',
|
21
|
+
'name' => 'dummy_name',
|
22
|
+
'description' => 'dummy_description'
|
23
|
+
},
|
24
|
+
'recipe' => nil,
|
25
|
+
'apply' => 'operational'
|
26
|
+
}
|
27
|
+
@delay = 0
|
28
28
|
end
|
29
29
|
|
30
30
|
def href
|
31
31
|
@params['right_script']['href']
|
32
32
|
end
|
33
|
+
|
33
34
|
def name
|
34
35
|
@params['right_script']['name']
|
35
36
|
end
|
data/lib/right_chimp/version.rb
CHANGED
data/lib/right_chimp.rb
CHANGED
@@ -17,28 +17,29 @@ require 'right_api_client'
|
|
17
17
|
require 'rest-client'
|
18
18
|
require 'logger'
|
19
19
|
|
20
|
+
# Group all the requires for Chimp
|
20
21
|
module Chimp
|
21
22
|
require 'right_chimp/version'
|
22
|
-
require 'right_chimp/
|
23
|
-
require 'right_chimp/
|
24
|
-
require 'right_chimp/
|
25
|
-
|
26
|
-
require 'right_chimp/daemon/
|
27
|
-
require 'right_chimp/daemon/
|
28
|
-
|
29
|
-
require 'right_chimp/queue/
|
30
|
-
require 'right_chimp/queue/
|
31
|
-
require 'right_chimp/queue/
|
32
|
-
|
33
|
-
require 'right_chimp/exec/
|
34
|
-
require 'right_chimp/exec/
|
35
|
-
require 'right_chimp/exec/
|
36
|
-
require 'right_chimp/exec/
|
37
|
-
require 'right_chimp/exec/
|
38
|
-
require 'right_chimp/exec/
|
39
|
-
|
40
|
-
require 'right_chimp/resources/
|
41
|
-
require 'right_chimp/resources/
|
42
|
-
require 'right_chimp/resources/
|
43
|
-
require 'right_chimp/resources/
|
23
|
+
require 'right_chimp/chimp'
|
24
|
+
require 'right_chimp/log'
|
25
|
+
require 'right_chimp/id_manager'
|
26
|
+
|
27
|
+
require 'right_chimp/daemon/chimp_daemon'
|
28
|
+
require 'right_chimp/daemon/chimp_daemon_client'
|
29
|
+
|
30
|
+
require 'right_chimp/queue/chimp_queue'
|
31
|
+
require 'right_chimp/queue/queue_worker'
|
32
|
+
require 'right_chimp/queue/execution_group'
|
33
|
+
|
34
|
+
require 'right_chimp/exec/executor'
|
35
|
+
require 'right_chimp/exec/exec_array'
|
36
|
+
require 'right_chimp/exec/exec_rightscript'
|
37
|
+
require 'right_chimp/exec/exec_ssh'
|
38
|
+
require 'right_chimp/exec/exec_report'
|
39
|
+
require 'right_chimp/exec/exec_noop'
|
40
|
+
|
41
|
+
require 'right_chimp/resources/connection'
|
42
|
+
require 'right_chimp/resources/executable'
|
43
|
+
require 'right_chimp/resources/server'
|
44
|
+
require 'right_chimp/resources/task'
|
44
45
|
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chimp::ChimpDaemonClient do
|
4
|
+
before(:all) do
|
5
|
+
@daemon = Chimp::ChimpDaemon.instance
|
6
|
+
@daemon.verbose = false
|
7
|
+
@daemon.concurrency = 3
|
8
|
+
@daemon.spawn_queue_runner
|
9
|
+
@daemon.spawn_webserver
|
10
|
+
end
|
11
|
+
|
12
|
+
after(:all) do
|
13
|
+
@daemon.server.shutdown
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:chimp_object) do
|
17
|
+
c = Chimp::Chimp.new
|
18
|
+
c.job_uuid = '123456'
|
19
|
+
c
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#submit' do
|
23
|
+
it 'should be able to send a job to the daemon' do
|
24
|
+
expect(Chimp::ChimpDaemonClient.submit('localhost', '9055', chimp_object, '123456')).to eq(true)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should increase the processing counter by 1' do
|
28
|
+
start_value = @daemon.proc_counter
|
29
|
+
Chimp::ChimpDaemonClient.submit('localhost', '9055', chimp_object, '123456')
|
30
|
+
difference = @daemon.proc_counter - start_value
|
31
|
+
expect(difference).to eq 1
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# describe '#retrieve_job_info' do
|
36
|
+
# it 'should correctly get a job ' do
|
37
|
+
# binding.pry
|
38
|
+
# Chimp::ChimpDaemonClient.retrieve_job_info('localhost', '9055')
|
39
|
+
# end
|
40
|
+
# end
|
41
|
+
|
42
|
+
describe '#retrieve_group_info' do
|
43
|
+
it 'should retrieve a full group' do
|
44
|
+
r = Chimp::ChimpDaemonClient.retrieve_group_info('localhost', '9055', 'default', :running)
|
45
|
+
expect(r).to be_a(Array)
|
46
|
+
expect(r[0]).to be_a(Chimp::ExecRightScript)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should fail if the group doesnt exist' do
|
50
|
+
expect {
|
51
|
+
Chimp::ChimpDaemonClient.retrieve_group_info('localhost', '9055', 'foobar', :running)
|
52
|
+
}.to raise_error(RestClient::ResourceNotFound)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# # this basically tests updating the status of a job
|
57
|
+
# describe '#set_job_status' do
|
58
|
+
# it 'should change the status of a job' do
|
59
|
+
# Chimp::ChimpDaemonClient.set_job_status('localhost', '9055', '0', :running)
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# it 'should be unable to update a job that doesnt exist' do
|
63
|
+
#
|
64
|
+
# end
|
65
|
+
# end
|
66
|
+
|
67
|
+
describe '#create_group' do
|
68
|
+
it 'should create a parallel group' do
|
69
|
+
expect(Chimp::ChimpDaemonClient.create_group('localhost', '9055', 'paragroup', :parallel, '3')).to eq(false)
|
70
|
+
expect(@daemon.queue.group['paragroup']).to be_a(Chimp::ParallelExecutionGroup)
|
71
|
+
expect(@daemon.queue.group['paragroup'].concurrency).to eq('3')
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should create a serial group' do
|
75
|
+
expect(Chimp::ChimpDaemonClient.create_group('localhost', '9055', 'serialgroup', :serial, '2')).to eq(false)
|
76
|
+
expect(@daemon.queue.group['serialgroup']).to be_a(Chimp::SerialExecutionGroup)
|
77
|
+
expect(@daemon.queue.group['serialgroup'].concurrency).to eq('2')
|
78
|
+
# FIXME: Concurrency doesnt seem to be applied correctly, serial group should have concurrency of 1
|
79
|
+
end
|
80
|
+
end
|
81
|
+
# describe '#retry_group'
|
82
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chimp::ChimpDaemon do
|
4
|
+
let(:daemon) do
|
5
|
+
Chimp::ChimpDaemon.instance
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#initialize' do
|
9
|
+
it 'is a ChimpDaemon object' do
|
10
|
+
expect(daemon).to be_a Chimp::ChimpDaemon
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'has a ChimpQueue object inside @queue' do
|
14
|
+
expect(daemon.queue).to be_a Chimp::ChimpQueue
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#run' do
|
19
|
+
# it 'should be able to spawn a webserver'
|
20
|
+
# it 'should be able to run forever'
|
21
|
+
# it 'should spawn a queue runner'
|
22
|
+
# it 'should run_forever'
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#parse_command_line' do
|
26
|
+
it 'should parse all parameters' do
|
27
|
+
string = '--logfile=/tmp/test --verbose --concurrency=34 --port=9056'
|
28
|
+
ARGV = string.split(' ')
|
29
|
+
daemon.parse_command_line
|
30
|
+
expect(daemon.concurrency).to eq 34
|
31
|
+
expect(daemon.logfile).to eq '/tmp/test'
|
32
|
+
expect(daemon.verbose).to eq true
|
33
|
+
expect(daemon.port).to eq '9056'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#spawn_webserver' do
|
38
|
+
it 'should spawn a webserver' do
|
39
|
+
daemon.spawn_webserver
|
40
|
+
expect(daemon.server).to be_a WEBrick::HTTPServer
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#run_forever' do
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#install_signal_handlers' do
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#quit' do
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#spawn_chimpd_submission_processor' do
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chimp::ExecRightScript do
|
4
|
+
let(:e) do
|
5
|
+
e = Chimp::ExecRightScript.new
|
6
|
+
e.job_uuid = '123456'
|
7
|
+
e.time_start = Time.now
|
8
|
+
e.time_end = e.time_start + 2
|
9
|
+
# Need to setup e.exec
|
10
|
+
e.exec = Chimp::Executable.new
|
11
|
+
e.server = Chimp::Server.new
|
12
|
+
e
|
13
|
+
end
|
14
|
+
|
15
|
+
before(:all) do
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#run' do
|
19
|
+
it 'should pause' do
|
20
|
+
# FIXME: probably need to workout some api stub/mocking
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#describe_work' do
|
25
|
+
it 'should return the formatted output' do
|
26
|
+
expect(e.describe_work).to be_a(String)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#info' do
|
31
|
+
it 'should be able to tell you the name' do
|
32
|
+
expect(e.info).to be_a(String)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#target' do
|
37
|
+
it 'should return the name of the server' do
|
38
|
+
expect(e.target).to be_a(String)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_chimp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: '2.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RightScale Operations
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: pry
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,20 +148,20 @@ files:
|
|
148
148
|
- docker/right_chimp.sh
|
149
149
|
- lib/right_chimp.rb
|
150
150
|
- lib/right_chimp/Chimp.rb
|
151
|
-
- lib/right_chimp/IDManager.rb
|
152
151
|
- lib/right_chimp/Log.rb
|
153
|
-
- lib/right_chimp/daemon/
|
154
|
-
- lib/right_chimp/daemon/
|
155
|
-
- lib/right_chimp/exec/ExecArray.rb
|
156
|
-
- lib/right_chimp/exec/ExecCallback.rb
|
157
|
-
- lib/right_chimp/exec/ExecNoop.rb
|
158
|
-
- lib/right_chimp/exec/ExecReport.rb
|
159
|
-
- lib/right_chimp/exec/ExecRightScript.rb
|
160
|
-
- lib/right_chimp/exec/ExecSSH.rb
|
152
|
+
- lib/right_chimp/daemon/chimp_daemon.rb
|
153
|
+
- lib/right_chimp/daemon/chimp_daemon_client.rb
|
161
154
|
- lib/right_chimp/exec/Executor.rb
|
162
|
-
- lib/right_chimp/
|
163
|
-
- lib/right_chimp/
|
164
|
-
- lib/right_chimp/
|
155
|
+
- lib/right_chimp/exec/exec_array.rb
|
156
|
+
- lib/right_chimp/exec/exec_callback.rb
|
157
|
+
- lib/right_chimp/exec/exec_noop.rb
|
158
|
+
- lib/right_chimp/exec/exec_report.rb
|
159
|
+
- lib/right_chimp/exec/exec_rightscript.rb
|
160
|
+
- lib/right_chimp/exec/exec_ssh.rb
|
161
|
+
- lib/right_chimp/id_manager.rb
|
162
|
+
- lib/right_chimp/queue/chimp_queue.rb
|
163
|
+
- lib/right_chimp/queue/execution_group.rb
|
164
|
+
- lib/right_chimp/queue/queue_worker.rb
|
165
165
|
- lib/right_chimp/resources/Connection.rb
|
166
166
|
- lib/right_chimp/resources/Executable.rb
|
167
167
|
- lib/right_chimp/resources/Server.rb
|
@@ -173,14 +173,10 @@ files:
|
|
173
173
|
- lib/right_chimp/templates/invertedhotdogstand.css
|
174
174
|
- lib/right_chimp/templates/styleswitcher.js
|
175
175
|
- lib/right_chimp/version.rb
|
176
|
-
- spec/
|
177
|
-
- spec/
|
178
|
-
- spec/
|
179
|
-
- spec/
|
180
|
-
- spec/spec_execution_group.rb
|
181
|
-
- spec/spec_queue.rb
|
182
|
-
- spec/spec_queue_worker.rb
|
183
|
-
- spec/spec_selection.rb
|
176
|
+
- spec/chimp_daemon_client_spec.rb
|
177
|
+
- spec/chimp_daemon_spec.rb
|
178
|
+
- spec/exec_righscript_spec.rb
|
179
|
+
- spec/spec_helper.rb
|
184
180
|
homepage: https://github.com/rightscale/right_chimp
|
185
181
|
licenses:
|
186
182
|
- MIT
|
@@ -206,11 +202,7 @@ signing_key:
|
|
206
202
|
specification_version: 4
|
207
203
|
summary: RightScale platform command-line tool
|
208
204
|
test_files:
|
209
|
-
- spec/
|
210
|
-
- spec/
|
211
|
-
- spec/
|
212
|
-
- spec/
|
213
|
-
- spec/spec_execution_group.rb
|
214
|
-
- spec/spec_queue.rb
|
215
|
-
- spec/spec_queue_worker.rb
|
216
|
-
- spec/spec_selection.rb
|
205
|
+
- spec/chimp_daemon_client_spec.rb
|
206
|
+
- spec/chimp_daemon_spec.rb
|
207
|
+
- spec/exec_righscript_spec.rb
|
208
|
+
- spec/spec_helper.rb
|
data/spec/spec_chimp.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Test chimpd client
|
3
|
-
#
|
4
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/.."
|
5
|
-
|
6
|
-
require 'lib/right_chimp.rb'
|
7
|
-
require 'rspec'
|
8
|
-
require 'pp'
|
9
|
-
|
10
|
-
include Chimp
|
11
|
-
|
12
|
-
describe Chimp::ExecRightScript do
|
13
|
-
it "can select servers with a tag query" do
|
14
|
-
c = Chimp::Chimp.new
|
15
|
-
c.tags = ["info:deployment=moo:localring91"]
|
16
|
-
c.script = "SYS DNSMadeEasy Register Addresses"
|
17
|
-
c.dry_run = false
|
18
|
-
c.run
|
19
|
-
end
|
20
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Test chimpd client
|
3
|
-
#
|
4
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/.."
|
5
|
-
require 'lib/right_chimp.rb'
|
6
|
-
require 'rspec'
|
7
|
-
require 'pp'
|
8
|
-
|
9
|
-
include Chimp
|
10
|
-
|
11
|
-
chimp_command = "CHIMP_TEST=true bundle exec bin/chimp --noprompt"
|
12
|
-
test_tag = "--tag='info:deployment=moo:localring91'"
|
13
|
-
test_script = "--script='SYS DNSMadeEasy Register Addresses'"
|
14
|
-
|
15
|
-
describe Chimp::Chimp do
|
16
|
-
#
|
17
|
-
# Selection options
|
18
|
-
#
|
19
|
-
#it "should not prompt when there is no action" do
|
20
|
-
# data =`CHIMP_TEST=true bundle exec bin/chimp #{test_tag}`
|
21
|
-
# $?.should == 0
|
22
|
-
# data.match("No actions to perform.").should != nil
|
23
|
-
#end
|
24
|
-
|
25
|
-
#
|
26
|
-
# RightScript execution
|
27
|
-
#
|
28
|
-
it "should run a rightscript with a tag query" do
|
29
|
-
system("#{chimp_command} #{test_tag} #{test_script}")
|
30
|
-
$?.should == 0
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should run scripts on an array with a concurrency of 1 and a delay of 5" do
|
34
|
-
system("#{chimp_command} --array='Core91' --concurrency=1 --delay=5 --script='SYS MAIL postfix configuration'")
|
35
|
-
$?.should == 0
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should run scripts on an array with a concurrency of 4 and a delay of 0" do
|
39
|
-
system("#{chimp_command} --array='Core94' --array='Core91' --concurrency=4 --delay=0 --script='SYS MAIL postfix configuration'")
|
40
|
-
$?.should == 0
|
41
|
-
end
|
42
|
-
|
43
|
-
#
|
44
|
-
# chimpd submission
|
45
|
-
#
|
46
|
-
|
47
|
-
#it "should run a rightscript with a tag query via chimpd" do
|
48
|
-
# system('CHIMP_TEST=true bundle exec bin/chimpd')
|
49
|
-
# system('CHIMP_TEST=true bundle exec bin/chimp --chimpd --dry-run --noprompt --tag="info:deployment=moo:localring91" --script="SYS DNSMadeEasy Register Addresses"')
|
50
|
-
# $?.should == 0
|
51
|
-
# system('CHIMP_TEST=true bundle exec bin/chimpd --quit')
|
52
|
-
#end
|
53
|
-
end
|
54
|
-
|
55
|
-
|
data/spec/spec_chimpd.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Test chimpd
|
3
|
-
#
|
4
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/.."
|
5
|
-
require 'lib/right_chimp.rb'
|
6
|
-
require 'rspec'
|
7
|
-
require 'pp'
|
8
|
-
|
9
|
-
include Chimp
|
10
|
-
|
11
|
-
uri =
|
12
|
-
|
13
|
-
describe Chimp::ChimpDaemon do
|
14
|
-
before :all do
|
15
|
-
@c = ChimpDaemon.instance
|
16
|
-
@c.spawn_queue_runner
|
17
|
-
@c.spawn_webserver
|
18
|
-
end
|
19
|
-
|
20
|
-
#
|
21
|
-
# .spawn_queue_runner
|
22
|
-
#
|
23
|
-
it "should have 50 threads" do
|
24
|
-
ChimpQueue.instance.max_threads.should == 50
|
25
|
-
end
|
26
|
-
|
27
|
-
#
|
28
|
-
# .quit
|
29
|
-
#
|
30
|
-
after :all do
|
31
|
-
@c.quit
|
32
|
-
end
|
33
|
-
end
|
data/spec/spec_chimpd_client.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Test chimpd client
|
3
|
-
#
|
4
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/.."
|
5
|
-
require 'lib/right_chimp.rb'
|
6
|
-
require 'rspec'
|
7
|
-
require 'pp'
|
8
|
-
|
9
|
-
include Chimp
|
10
|
-
|
11
|
-
host = "localhost"
|
12
|
-
port = "9055"
|
13
|
-
|
14
|
-
describe Chimp::ChimpDaemonClient do
|
15
|
-
before :all do
|
16
|
-
@c = ChimpDaemon.new
|
17
|
-
@c.verbose = false
|
18
|
-
@c.concurrency = 3
|
19
|
-
@c.spawn_queue_runner
|
20
|
-
@c.spawn_webserver
|
21
|
-
end
|
22
|
-
|
23
|
-
after :all do
|
24
|
-
@c.quit if @c
|
25
|
-
end
|
26
|
-
|
27
|
-
#it "can quit a chimpd" do
|
28
|
-
# response_code = ChimpDaemonClient.quit(host, port)
|
29
|
-
# response_code.should == 200
|
30
|
-
#end
|
31
|
-
|
32
|
-
#
|
33
|
-
# .submit
|
34
|
-
#
|
35
|
-
it "can submit work to chimpd" do
|
36
|
-
c = Chimp::Chimp.new
|
37
|
-
c.tags = ["service:auditor=true"]
|
38
|
-
c.script = "SYS DNSMadeEasy Register Addresses"
|
39
|
-
c.dry_run = false
|
40
|
-
ChimpDaemonClient.submit(host, port, c)
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
@@ -1,135 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Test QueueWorker
|
3
|
-
#
|
4
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/.."
|
5
|
-
require 'lib/right_chimp.rb'
|
6
|
-
require 'rspec'
|
7
|
-
|
8
|
-
include Chimp
|
9
|
-
|
10
|
-
describe SerialExecutionGroup do
|
11
|
-
before :each do
|
12
|
-
@eg = SerialExecutionGroup.new(:test)
|
13
|
-
end
|
14
|
-
|
15
|
-
#
|
16
|
-
# .ready?
|
17
|
-
#
|
18
|
-
it "should be ready when it has work in its queue" do
|
19
|
-
@eg.ready?.should == false
|
20
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
21
|
-
@eg.ready?.should == true
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should not be ready while a job is executing" do
|
25
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
26
|
-
@eg.push(ExecNoop.new(:job_id => 1))
|
27
|
-
@eg.get_job(0).status = Executor::STATUS_RUNNING
|
28
|
-
@eg.ready?.should == false
|
29
|
-
end
|
30
|
-
|
31
|
-
#
|
32
|
-
# .done?
|
33
|
-
#
|
34
|
-
it "should not be done when it has work in its queue" do
|
35
|
-
@eg.done?.should == true
|
36
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
37
|
-
@eg.done?.should == false
|
38
|
-
end
|
39
|
-
|
40
|
-
#
|
41
|
-
# .size
|
42
|
-
#
|
43
|
-
it "should be able to report the correct number of items in its queue" do
|
44
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
45
|
-
@eg.push(ExecNoop.new(:job_id => 1))
|
46
|
-
@eg.push(ExecNoop.new(:job_id => 2))
|
47
|
-
@eg.push(ExecNoop.new(:job_id => 3))
|
48
|
-
@eg.push(ExecNoop.new(:job_id => 4))
|
49
|
-
|
50
|
-
@eg.size.should == 5
|
51
|
-
|
52
|
-
@eg.shift
|
53
|
-
@eg.size.should == 4
|
54
|
-
|
55
|
-
@eg.shift
|
56
|
-
@eg.size.should == 3
|
57
|
-
end
|
58
|
-
|
59
|
-
#
|
60
|
-
# .sort!
|
61
|
-
#
|
62
|
-
it "should be able to sort its queue by server name" do
|
63
|
-
@eg.push(ExecNoop.new(:job_id => 1, :server => { "nickname" => "BBB", "name" => "BBB"}))
|
64
|
-
@eg.push(ExecNoop.new(:job_id => 1, :server => { "nickname" => "CCC", "name" => "CCC"}))
|
65
|
-
@eg.push(ExecNoop.new(:job_id => 0, :server => { "nickname" => "AAA", "name" => "AAA"}))
|
66
|
-
@eg.sort!
|
67
|
-
end
|
68
|
-
|
69
|
-
#
|
70
|
-
# .running?
|
71
|
-
#
|
72
|
-
it "should tell us whether it is running" do
|
73
|
-
@eg.running?.should == false
|
74
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
75
|
-
@eg.running?.should == true
|
76
|
-
end
|
77
|
-
|
78
|
-
#
|
79
|
-
# .requeue(id)
|
80
|
-
#
|
81
|
-
it "should requeue jobs correctly" do
|
82
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
83
|
-
@eg.reset!
|
84
|
-
@eg.size.should == 0
|
85
|
-
@eg.requeue(0)
|
86
|
-
@eg.size.should == 1
|
87
|
-
end
|
88
|
-
|
89
|
-
#
|
90
|
-
# .requeue_failed_jobs
|
91
|
-
#
|
92
|
-
it "should requeue all failed jobs" do
|
93
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
94
|
-
@eg.reset!
|
95
|
-
@eg.size.should == 0
|
96
|
-
|
97
|
-
@eg.get_job(0).status = Executor::STATUS_ERROR
|
98
|
-
@eg.requeue_failed_jobs!
|
99
|
-
@eg.size.should == 1
|
100
|
-
end
|
101
|
-
|
102
|
-
#
|
103
|
-
# .cancel(id)
|
104
|
-
#
|
105
|
-
it "should cancel a job" do
|
106
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
107
|
-
@eg.size.should == 1
|
108
|
-
@eg.cancel(0)
|
109
|
-
@eg.size.should == 0
|
110
|
-
end
|
111
|
-
|
112
|
-
end
|
113
|
-
|
114
|
-
describe ParallelExecutionGroup do
|
115
|
-
before :each do
|
116
|
-
@eg = ParallelExecutionGroup.new(:test)
|
117
|
-
end
|
118
|
-
|
119
|
-
#
|
120
|
-
# .ready?
|
121
|
-
#
|
122
|
-
it "should be ready when it has work in its queue" do
|
123
|
-
@eg.ready?.should == false
|
124
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
125
|
-
@eg.push(ExecNoop.new(:job_id => 1))
|
126
|
-
@eg.ready?.should == true
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should be ready while a job is executing" do
|
130
|
-
@eg.push(ExecNoop.new(:job_id => 0))
|
131
|
-
@eg.push(ExecNoop.new(:job_id => 1))
|
132
|
-
@eg.get_job(0).status = Executor::STATUS_RUNNING
|
133
|
-
@eg.ready?.should == true
|
134
|
-
end
|
135
|
-
end
|
data/spec/spec_queue.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Test ChimpQueue
|
3
|
-
#
|
4
|
-
|
5
|
-
require 'lib/right_chimp.rb'
|
6
|
-
require 'rspec'
|
7
|
-
|
8
|
-
include Chimp
|
9
|
-
|
10
|
-
describe ChimpQueue do
|
11
|
-
before :all do
|
12
|
-
@queue = ChimpQueue.instance
|
13
|
-
@queue.max_threads = 3
|
14
|
-
@queue.start
|
15
|
-
end
|
16
|
-
|
17
|
-
before :each do
|
18
|
-
@queue.reset!
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should accept work" do
|
22
|
-
@queue.push(:default, ExecNoop.new(:job_id => 0))
|
23
|
-
@queue.group[:default].get_job(0).status.should == Executor::STATUS_NONE
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should distribute work" do
|
27
|
-
@queue.push(:default, ExecNoop.new(:job_id => 0))
|
28
|
-
@queue.shift.status.should == Executor::STATUS_NONE
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should process the queue" do
|
32
|
-
@queue.push(:default, ExecNoop.new(:job_id => 0))
|
33
|
-
@queue.wait_until_done(:default) { }
|
34
|
-
@queue.group[:default].get_job(0).status.should == Executor::STATUS_DONE
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
data/spec/spec_queue_worker.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Test QueueWorker
|
3
|
-
#
|
4
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/.."
|
5
|
-
require 'lib/right_chimp.rb'
|
6
|
-
require 'rspec'
|
7
|
-
|
8
|
-
include Chimp
|
9
|
-
|
10
|
-
describe QueueWorker do
|
11
|
-
it "should instantiate" do
|
12
|
-
q = QueueWorker.new
|
13
|
-
q.delay = 10
|
14
|
-
q.retry_count = 10
|
15
|
-
q.never_exit = false
|
16
|
-
|
17
|
-
ChimpQueue.instance.group = {}
|
18
|
-
|
19
|
-
q.delay.should == 10
|
20
|
-
q.retry_count.should == 10
|
21
|
-
q.never_exit.should == false
|
22
|
-
end
|
23
|
-
|
24
|
-
#it "should run" do
|
25
|
-
# q = QueueWorker.new
|
26
|
-
# q.run
|
27
|
-
#end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
data/spec/spec_selection.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Test Chimp
|
3
|
-
#
|
4
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/.."
|
5
|
-
require 'lib/right_chimp.rb'
|
6
|
-
require 'rspec'
|
7
|
-
|
8
|
-
describe Chimp::Chimp do
|
9
|
-
before :each do
|
10
|
-
@c = Chimp::Chimp.new
|
11
|
-
@c.quiet = true
|
12
|
-
@c.prompt = false
|
13
|
-
@c.progress = false
|
14
|
-
@c.interactive = false
|
15
|
-
end
|
16
|
-
|
17
|
-
it "performs a tag query" do
|
18
|
-
@c.tags = ['service:dataservice=true']
|
19
|
-
@c.run
|
20
|
-
@c.servers.size.should > 0
|
21
|
-
end
|
22
|
-
|
23
|
-
it "performs a deployment query" do
|
24
|
-
@c.deployment_names = ['moo:globalring']
|
25
|
-
@c.run
|
26
|
-
@c.servers.size.should > 0
|
27
|
-
end
|
28
|
-
|
29
|
-
it "performs an array query" do
|
30
|
-
@c.array_names = ['Chimp Test Array']
|
31
|
-
@c.run
|
32
|
-
end
|
33
|
-
end
|