baton 0.5.4 → 0.5.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.rspec +2 -1
- data/.travis.yml +1 -0
- data/Gemfile +0 -1
- data/{COPYING → LICENSE} +0 -0
- data/README.md +6 -0
- data/Rakefile +6 -0
- data/baton.gemspec +2 -0
- data/lib/baton/channel.rb +1 -0
- data/lib/baton/server.rb +10 -5
- data/lib/baton/version.rb +1 -1
- data/lib/baton.rb +4 -0
- data/spec/baton/baton_spec.rb +1 -2
- data/spec/baton/configuration_spec.rb +12 -12
- data/spec/baton/consumer_manager_spec.rb +14 -25
- data/spec/baton/consumer_spec.rb +5 -14
- data/spec/baton/observer_spec.rb +0 -1
- data/spec/baton/server_spec.rb +6 -4
- data/spec/spec_helper.rb +7 -7
- metadata +35 -5
- data/dump.rdb +0 -0
data/.gitignore
CHANGED
data/.rspec
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
--color
|
1
|
+
--color
|
2
|
+
--order rand
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/{COPYING → LICENSE}
RENAMED
File without changes
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Baton - Server Orchestration Tool
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/baton.png)](http://badge.fury.io/rb/baton)
|
3
4
|
[![Build Status](https://secure.travis-ci.org/digital-science/baton.png?branch=master)](http://travis-ci.org/digital-science/baton)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/digital-science/baton.png)](https://codeclimate.com/github/digital-science/baton)
|
4
6
|
|
5
7
|
## Description
|
6
8
|
|
@@ -89,3 +91,7 @@ If you would like to create your own extension, simply install baton (`gem insta
|
|
89
91
|
batonize gem GEMNAME -b
|
90
92
|
|
91
93
|
This will create a basic gem structure with the necessary files to create a minimum viable baton extension.
|
94
|
+
|
95
|
+
# Copyright
|
96
|
+
|
97
|
+
Copyright (c) Digital Science. See [LICENSE](https://github.com/digital-science/baton/blob/master/LICENSE) for details.
|
data/Rakefile
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
require "rspec/core/rake_task"
|
4
|
+
require "bueller"
|
4
5
|
|
5
6
|
task :default => [:test]
|
6
7
|
|
8
|
+
Bueller::Tasks.new
|
9
|
+
|
7
10
|
RSpec::Core::RakeTask.new(:test)
|
11
|
+
|
12
|
+
desc "Run RSpec tests"
|
8
13
|
task :test => :spec
|
9
14
|
|
15
|
+
desc "Run a console with baton lib loaded"
|
10
16
|
task :console do
|
11
17
|
sh "irb -rubygems -I lib -r baton.rb"
|
12
18
|
end
|
data/baton.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |gem|
|
|
24
24
|
gem.add_runtime_dependency "chef", ">= 11.0"
|
25
25
|
gem.add_runtime_dependency "thor"
|
26
26
|
|
27
|
+
gem.add_development_dependency "bueller", "~> 0.0.9"
|
27
28
|
gem.add_development_dependency "rspec", "~> 2.7"
|
28
29
|
gem.add_development_dependency "moqueue", "~> 0.1.4"
|
29
30
|
gem.add_development_dependency "fakefs", "~> 0.4.0"
|
@@ -32,4 +33,5 @@ Gem::Specification.new do |gem|
|
|
32
33
|
gem.add_development_dependency "minitar", "0.5.3"
|
33
34
|
gem.add_development_dependency "simplecov", "0.6.4"
|
34
35
|
gem.add_development_dependency "pry"
|
36
|
+
gem.add_development_dependency "guard-rspec", "~> 3.0.0"
|
35
37
|
end
|
data/lib/baton/channel.rb
CHANGED
data/lib/baton/server.rb
CHANGED
@@ -5,12 +5,10 @@ module Baton
|
|
5
5
|
|
6
6
|
attr_accessor :environment, :fqdn, :app_names
|
7
7
|
|
8
|
-
# Public:
|
9
|
-
#
|
8
|
+
# Public: Initializes a server. Loads Ohai plugins and sets up basic
|
9
|
+
# server info, such as environment, fqdn and app names.
|
10
10
|
def initialize
|
11
|
-
|
12
|
-
@ohai = Ohai::System.new
|
13
|
-
@ohai.all_plugins
|
11
|
+
setup_ohai
|
14
12
|
configure
|
15
13
|
end
|
16
14
|
|
@@ -55,5 +53,12 @@ module Baton
|
|
55
53
|
"/etc/chef/ohai_plugins"
|
56
54
|
end
|
57
55
|
|
56
|
+
# Load Ohai plugins from the server
|
57
|
+
def setup_ohai
|
58
|
+
Ohai::Config[:plugin_path] << ohai_plugin_path
|
59
|
+
@ohai = Ohai::System.new
|
60
|
+
@ohai.all_plugins
|
61
|
+
end
|
62
|
+
|
58
63
|
end
|
59
64
|
end
|
data/lib/baton/version.rb
CHANGED
data/lib/baton.rb
CHANGED
data/spec/baton/baton_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
require "baton/configuration"
|
3
2
|
|
4
3
|
describe Baton::Configuration do
|
5
4
|
describe "#config_path=" do
|
6
5
|
context "given config file available" do
|
6
|
+
|
7
7
|
before(:each) do
|
8
8
|
subject.config_path = "#{File.dirname(__FILE__)}/../fixtures/config.cfg"
|
9
9
|
end
|
@@ -45,12 +45,12 @@ describe Baton::Configuration do
|
|
45
45
|
context "give a config file" do
|
46
46
|
it "will return a config hash" do
|
47
47
|
subject.connection_opts.should eq({
|
48
|
-
:
|
49
|
-
:
|
50
|
-
:
|
51
|
-
:
|
52
|
-
:
|
53
|
-
:
|
48
|
+
host: "fromconfig.com",
|
49
|
+
vhost: "fromconfig",
|
50
|
+
user: "fromconfiguser",
|
51
|
+
password: "fromconfigpass",
|
52
|
+
pass: "fromconfigpass",
|
53
|
+
heartbeat: 666
|
54
54
|
})
|
55
55
|
end
|
56
56
|
end
|
@@ -59,11 +59,11 @@ describe Baton::Configuration do
|
|
59
59
|
it "will not be returned in the config hash" do
|
60
60
|
subject.vhost = nil
|
61
61
|
subject.connection_opts.should eq({
|
62
|
-
:
|
63
|
-
:
|
64
|
-
:
|
65
|
-
:
|
66
|
-
:
|
62
|
+
host: "fromconfig.com",
|
63
|
+
user: "fromconfiguser",
|
64
|
+
password: "fromconfigpass",
|
65
|
+
pass: "fromconfigpass",
|
66
|
+
heartbeat: 666
|
67
67
|
})
|
68
68
|
end
|
69
69
|
end
|
@@ -1,41 +1,30 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
require "
|
3
|
-
require "baton/consumer"
|
4
|
-
require "baton/consumer_manager"
|
5
|
-
require "baton/server"
|
6
|
-
require "ostruct"
|
2
|
+
require "moqueue"
|
7
3
|
|
8
4
|
describe Baton::ConsumerManager do
|
9
5
|
|
10
|
-
|
6
|
+
subject { Baton::ConsumerManager.new(consumer, nil,
|
7
|
+
mock_exchange({:direct => true}),
|
8
|
+
mock_exchange({:direct => true})) }
|
9
|
+
let(:server) {
|
11
10
|
Baton::Server.any_instance.stub(:facts).and_return({
|
12
11
|
"fqdn" => "camac.dsci.it",
|
13
12
|
"chef_environment" => "production"
|
14
13
|
})
|
15
|
-
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
subject {
|
20
|
-
Baton::ConsumerManager.new(@consumer, nil, mock_exchange({:direct => true}), mock_exchange({:direct => true}))
|
14
|
+
Baton::Server.any_instance.stub(:setup_ohai)
|
15
|
+
Baton::Server.new
|
21
16
|
}
|
22
|
-
|
23
|
-
let(:metadata)
|
24
|
-
|
25
|
-
obj.content_type = "application/json"
|
26
|
-
obj
|
27
|
-
end
|
28
|
-
|
29
|
-
let(:payload) do
|
30
|
-
JSON({"type" => "message type" })
|
31
|
-
end
|
17
|
+
let(:consumer) { Baton::Consumer.new("camac", server) }
|
18
|
+
let(:metadata) { o = OpenStruct.new ; o.content_type = "application/json"; o }
|
19
|
+
let(:payload) { JSON({"type" => "message type" }) }
|
32
20
|
|
33
21
|
describe "#start" do
|
34
22
|
it "will subscribe to a queue using the correct routing key" do
|
35
23
|
subject.exchange_in.stub(:name)
|
36
24
|
allow_message_expectations_on_nil
|
37
25
|
queue = mock("queue")
|
38
|
-
queue.should_receive(:bind).with(subject.exchange_in,
|
26
|
+
queue.should_receive(:bind).with(subject.exchange_in,
|
27
|
+
routing_key: "camac.production")
|
39
28
|
queue.should_receive(:subscribe)
|
40
29
|
subject.channel.stub(:queue).and_return(queue)
|
41
30
|
subject.start
|
@@ -61,8 +50,8 @@ describe Baton::ConsumerManager do
|
|
61
50
|
describe "#update" do
|
62
51
|
context "given a message is sent to the consumer and the consumer notifies" do
|
63
52
|
it "should trigger update with a message" do
|
64
|
-
|
65
|
-
|
53
|
+
consumer.stub(:process_message) do |message|
|
54
|
+
consumer.notify("message from consumer")
|
66
55
|
end
|
67
56
|
subject.should_receive(:update)
|
68
57
|
subject.handle_message(metadata, payload)
|
data/spec/baton/consumer_spec.rb
CHANGED
@@ -1,26 +1,17 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
require "baton"
|
3
|
-
require "baton/consumer"
|
4
|
-
require "baton/server"
|
5
|
-
require 'ostruct'
|
6
2
|
|
7
3
|
describe Baton::Consumer do
|
8
4
|
|
9
|
-
|
5
|
+
let(:server) {
|
10
6
|
Baton::Server.any_instance.stub(:facts).and_return({
|
11
7
|
"fqdn" => "camac.dsci.it",
|
12
8
|
"chef_environment" => "production"
|
13
9
|
})
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
let(:payload) do
|
18
|
-
JSON({"type" => "message type" })
|
19
|
-
end
|
20
|
-
|
21
|
-
subject {
|
22
|
-
Baton::Consumer.new("deploy-consumer", @server)
|
10
|
+
Baton::Server.any_instance.stub(:setup_ohai)
|
11
|
+
Baton::Server.new
|
23
12
|
}
|
13
|
+
let(:payload) { JSON({"type" => "message type" }) }
|
14
|
+
let(:subject) { Baton::Consumer.new("deploy-consumer", server) }
|
24
15
|
|
25
16
|
describe "#routing_key" do
|
26
17
|
context "given an instance of Baton::Consumer" do
|
data/spec/baton/observer_spec.rb
CHANGED
data/spec/baton/server_spec.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
require "baton/server"
|
3
2
|
|
4
3
|
describe Baton::Server do
|
4
|
+
|
5
5
|
context "stubbed ohai" do
|
6
|
+
|
6
7
|
before(:each) do
|
7
|
-
|
8
|
-
Ohai::System.any_instance.stub(:data).and_return({
|
8
|
+
Baton::Server.any_instance.stub(:facts).and_return({
|
9
9
|
"chef_environment" => "production",
|
10
10
|
"fqdn" => "build-prod-i-722b0004.dsci.it",
|
11
11
|
"trebuchet" => ["octobutler"]
|
12
12
|
})
|
13
|
+
Baton::Server.any_instance.stub(:setup_ohai)
|
13
14
|
end
|
14
15
|
|
15
16
|
describe "#configure" do
|
@@ -31,6 +32,7 @@ describe Baton::Server do
|
|
31
32
|
context "given the required facts are not available" do
|
32
33
|
before(:each) do
|
33
34
|
Baton::Server.any_instance.stub(:facts).and_return({})
|
35
|
+
Baton::Server.any_instance.stub(:setup_ohai)
|
34
36
|
subject.configure
|
35
37
|
end
|
36
38
|
|
@@ -68,7 +70,7 @@ describe Baton::Server do
|
|
68
70
|
describe "#environment" do
|
69
71
|
context "production" do
|
70
72
|
it "should have the correct environment set" do
|
71
|
-
|
73
|
+
Baton::Server.new.environment.should eq('production')
|
72
74
|
end
|
73
75
|
end
|
74
76
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,16 +2,16 @@ require 'simplecov'
|
|
2
2
|
SimpleCov.start do
|
3
3
|
add_filter "/spec"
|
4
4
|
end
|
5
|
+
|
5
6
|
require 'rubygems'
|
6
|
-
require 'bundler'
|
7
|
-
|
7
|
+
require 'bundler/setup'
|
8
|
+
|
9
|
+
dir = File.dirname(File.expand_path(__FILE__))
|
10
|
+
$LOAD_PATH.unshift dir + '/../lib'
|
11
|
+
require 'baton'
|
12
|
+
|
8
13
|
require 'fakefs/spec_helpers'
|
9
|
-
require "moqueue"
|
10
|
-
require "rspec/expectations"
|
11
14
|
require 'webmock/rspec'
|
12
|
-
require "baton/logging"
|
13
|
-
require 'json'
|
14
|
-
require 'pry'
|
15
15
|
|
16
16
|
WebMock.disable_net_connect!
|
17
17
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baton
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-03
|
13
|
+
date: 2013-07-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: amqp
|
@@ -140,6 +140,22 @@ dependencies:
|
|
140
140
|
- - ! '>='
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: '0'
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: bueller
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ~>
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: 0.0.9
|
151
|
+
type: :development
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ~>
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: 0.0.9
|
143
159
|
- !ruby/object:Gem::Dependency
|
144
160
|
name: rspec
|
145
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,6 +284,22 @@ dependencies:
|
|
268
284
|
- - ! '>='
|
269
285
|
- !ruby/object:Gem::Version
|
270
286
|
version: '0'
|
287
|
+
- !ruby/object:Gem::Dependency
|
288
|
+
name: guard-rspec
|
289
|
+
requirement: !ruby/object:Gem::Requirement
|
290
|
+
none: false
|
291
|
+
requirements:
|
292
|
+
- - ~>
|
293
|
+
- !ruby/object:Gem::Version
|
294
|
+
version: 3.0.0
|
295
|
+
type: :development
|
296
|
+
prerelease: false
|
297
|
+
version_requirements: !ruby/object:Gem::Requirement
|
298
|
+
none: false
|
299
|
+
requirements:
|
300
|
+
- - ~>
|
301
|
+
- !ruby/object:Gem::Version
|
302
|
+
version: 3.0.0
|
271
303
|
description: Baton
|
272
304
|
email:
|
273
305
|
- johnog@gmail.com
|
@@ -281,14 +313,13 @@ files:
|
|
281
313
|
- .rspec
|
282
314
|
- .travis.yml
|
283
315
|
- CHANGELOG.md
|
284
|
-
- COPYING
|
285
316
|
- Gemfile
|
286
317
|
- Guardfile
|
318
|
+
- LICENSE
|
287
319
|
- README.md
|
288
320
|
- Rakefile
|
289
321
|
- baton.gemspec
|
290
322
|
- bin/batonize
|
291
|
-
- dump.rdb
|
292
323
|
- lib/baton.rb
|
293
324
|
- lib/baton/api.rb
|
294
325
|
- lib/baton/channel.rb
|
@@ -369,4 +400,3 @@ test_files:
|
|
369
400
|
- spec/fixtures/invalid_file.sum
|
370
401
|
- spec/fixtures/ohai_plugins/chef_environment.rb
|
371
402
|
- spec/spec_helper.rb
|
372
|
-
has_rdoc:
|
data/dump.rdb
DELETED
Binary file
|