abiquo-chef-agent 2.0.4 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +5 -2
- data/bin/abiquo-chef-run +1 -20
- data/install.sh +6 -1
- data/lib/abiquo-chef-agent.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/bootstrap_config_parser_spec.rb +13 -13
- data/spec/unit/config_spec.rb +7 -7
- data/spec/unit/util_spec.rb +9 -9
- metadata +26 -7
data/Gemfile
CHANGED
data/bin/abiquo-chef-run
CHANGED
@@ -163,9 +163,7 @@ else
|
|
163
163
|
log "done"
|
164
164
|
|
165
165
|
#
|
166
|
-
# Everything in place,
|
167
|
-
#
|
168
|
-
# first, we run it once to register and apply recipes
|
166
|
+
# Everything in place, so run the client
|
169
167
|
cmd = "chef-client -N #{node_name} --once -j /etc/chef/first-boot.json -L /var/log/chef-client.log"
|
170
168
|
log "Running chef-client first time"
|
171
169
|
log cmd
|
@@ -184,22 +182,5 @@ else
|
|
184
182
|
if $? != 0
|
185
183
|
log "chef-client run failed", :error
|
186
184
|
log output, :info
|
187
|
-
else
|
188
|
-
log "Running chef-client in daemon mode"
|
189
|
-
# Run the chef-client if not already running
|
190
|
-
if not (`ps aux|grep "chef-client "| grep -v grep|wc -l`.to_i > 0)
|
191
|
-
# Now we run it in daemon mode
|
192
|
-
cmd = "chef-client -N #{node_name} -i 1800 -d -L /var/log/chef-client.log"
|
193
|
-
output = `#{cmd}`
|
194
|
-
if $? != 0
|
195
|
-
log "Running chef-client in daemon mode failed.", :error
|
196
|
-
log output
|
197
|
-
else
|
198
|
-
log "Success."
|
199
|
-
end
|
200
|
-
else
|
201
|
-
log "chef-client already running."
|
202
|
-
log `ps aux|grep "chef-client "| grep -v grep`
|
203
|
-
end
|
204
185
|
end
|
205
186
|
end
|
data/install.sh
CHANGED
@@ -7,7 +7,7 @@ fi
|
|
7
7
|
|
8
8
|
DIST="dist/centos"
|
9
9
|
|
10
|
-
echo "Installing
|
10
|
+
echo "Installing NTP..."
|
11
11
|
yum --quiet --assumeyes install ntp
|
12
12
|
|
13
13
|
echo "Installing Chef..."
|
@@ -23,6 +23,11 @@ chmod +x /etc/init.d/abiquo-chef-run
|
|
23
23
|
chkconfig --add abiquo-chef-run
|
24
24
|
chkconfig abiquo-chef-run on
|
25
25
|
|
26
|
+
echo "Configuring DHCP..."
|
26
27
|
cp ${DIST}/dhclient.conf /etc/dhcp/
|
28
|
+
IFACES=`ip link show | grep ^[0-9]: | grep -iv loopback | cut -d: -f2 | tr -d ' '`
|
29
|
+
for IFACE in ${IFACES}; do
|
30
|
+
cp ${DIST}/dhclient.conf /etc/dhcp/dhclient-${IFACE}.conf
|
31
|
+
done
|
27
32
|
|
28
33
|
echo "Done!"
|
data/lib/abiquo-chef-agent.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -83,16 +83,16 @@ describe "Bootstrap Config Parser" do
|
|
83
83
|
|
84
84
|
describe "name" do
|
85
85
|
it "should be a string" do
|
86
|
-
@cp.node_name.
|
86
|
+
expect(@cp.node_name).to be_a(String)
|
87
87
|
end
|
88
88
|
it "should start with ABQ-" do
|
89
|
-
@cp.node_name.
|
89
|
+
expect(@cp.node_name).to match(/^ABQ-/)
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
93
|
describe "node_config" do
|
94
94
|
it "should be a Hash" do
|
95
|
-
@cp.node_config.
|
95
|
+
expect(@cp.node_config).to be_a(Hash)
|
96
96
|
end
|
97
97
|
|
98
98
|
it "runlist should be an empty missing" do
|
@@ -101,22 +101,22 @@ describe "Bootstrap Config Parser" do
|
|
101
101
|
end
|
102
102
|
|
103
103
|
it "should have three elements" do
|
104
|
-
@cp.node_config.
|
104
|
+
expect(@cp.node_config).to have(3).items
|
105
105
|
end
|
106
106
|
|
107
107
|
it "runlist should have a two items in the runlist" do
|
108
|
-
@cp.node_config["run_list"].
|
108
|
+
expect(@cp.node_config["run_list"]).to have(2).items
|
109
109
|
end
|
110
110
|
|
111
111
|
it "should be an array of strings" do
|
112
112
|
@cp.node_config["run_list"].each do |i|
|
113
|
-
i.
|
113
|
+
expect(i).to be_a(String)
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
117
|
it "should have a recipe and a role" do
|
118
|
-
@cp.node_config["run_list"].first.
|
119
|
-
@cp.node_config["run_list"].last.
|
118
|
+
expect(@cp.node_config["run_list"].first).to match(/role\[/)
|
119
|
+
expect(@cp.node_config["run_list"].last).to match(/recipe\[/)
|
120
120
|
end
|
121
121
|
|
122
122
|
it "should contains boundary and newrelic" do
|
@@ -133,29 +133,29 @@ describe "Bootstrap Config Parser" do
|
|
133
133
|
|
134
134
|
it "attributes should be missing" do
|
135
135
|
cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_runlist_no_attributes.xml"))
|
136
|
-
cp.node_config.size.
|
136
|
+
expect(cp.node_config.size).to be(0)
|
137
137
|
end
|
138
138
|
|
139
139
|
end
|
140
140
|
|
141
141
|
describe "chef-server-url" do
|
142
142
|
it "should be a URL" do
|
143
|
-
@cp.chef_server_url.
|
143
|
+
expect(@cp.chef_server_url).to match(/^http(s)?:\/\//)
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
147
|
describe "validation-client-name" do
|
148
148
|
it "should be a String" do
|
149
|
-
@cp.validation_client_name.
|
149
|
+
expect(@cp.validation_client_name).to be_a(String)
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
153
|
describe "validation_cert" do
|
154
154
|
it 'should start with -----BEGIN RSA PRIVATE KEY' do
|
155
|
-
@cp.validation_cert.
|
155
|
+
expect(@cp.validation_cert).to match(/^-----BEGIN RSA PRIVATE KEY/)
|
156
156
|
end
|
157
157
|
it 'should end with END RSA PRIVATE KEY-----' do
|
158
|
-
@cp.validation_cert.
|
158
|
+
expect(@cp.validation_cert).to match(/END RSA PRIVATE KEY-----$/)
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
data/spec/unit/config_spec.rb
CHANGED
@@ -8,31 +8,31 @@ describe Abiquo::Chef::Config do
|
|
8
8
|
describe "default options" do
|
9
9
|
|
10
10
|
it "should have a valid chef_config_dir" do
|
11
|
-
@config.chef_config_dir.
|
11
|
+
expect(@config.chef_config_dir).to be_a(String)
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should have a valid ntp_server" do
|
15
|
-
@config.ntp_server.
|
15
|
+
expect(@config.ntp_server).to be_a(String)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should have a valid log_file" do
|
19
|
-
@config.log_file.
|
19
|
+
expect(@config.log_file).to be_a(String)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should have a valid bootstrap_backup_file" do
|
23
|
-
@config.bootstrap_backup_file.
|
23
|
+
expect(@config.bootstrap_backup_file).to be_a(String)
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should have a valid validation_cert" do
|
27
|
-
@config.validation_cert.
|
27
|
+
expect(@config.validation_cert).to be_a(String)
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should have a valid client_cert_file" do
|
31
|
-
@config.client_cert_file.
|
31
|
+
expect(@config.client_cert_file).to be_a(String)
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should have a valid bootstrap xml mediatype" do
|
35
|
-
@config.bootstrap_mediatype.
|
35
|
+
expect(@config.bootstrap_mediatype).to match(/^application\/vnd.abiquo.[a-z]+\+xml(;version=[0-9](\.[0-9]+)+)?$/)
|
36
36
|
end
|
37
37
|
|
38
38
|
end
|
data/spec/unit/util_spec.rb
CHANGED
@@ -11,39 +11,39 @@ describe Util do
|
|
11
11
|
|
12
12
|
describe 'parse_leases_file' do
|
13
13
|
it 'parse leases file without error' do
|
14
|
-
@leases.
|
14
|
+
expect(@leases).to be_a(Hash)
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should not be empty' do
|
18
|
-
@leases.
|
18
|
+
expect(@leases).to_not be_empty
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'should find a valid ip address' do
|
22
|
-
@leases[:ip].
|
22
|
+
expect(@leases[:ip]).to match(/([0-9]{1,3}\.){3}[0-9]{1,3}/)
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'should have a valid API URL' do
|
26
|
-
@leases[:abiquo_api_url].
|
26
|
+
expect(@leases[:abiquo_api_url]).to match(/http(s)?:\/\//)
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'should return latest lease' do
|
30
|
-
@leases[:renew].
|
30
|
+
expect(@leases[:renew]).to eql(Time.parse('2012-11-18 05:48:45 +0100'))
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should have a valid token' do
|
34
|
-
@leases[:abiquo_api_token].
|
34
|
+
expect(@leases[:abiquo_api_token]).to have_at_least(5).characters
|
35
35
|
end
|
36
36
|
|
37
37
|
end
|
38
38
|
|
39
39
|
describe 'find_leases_file' do
|
40
40
|
it 'should find a lease file' do
|
41
|
-
Util.find_leases_file([data_dir + "dhclient/"]).
|
41
|
+
expect(Util.find_leases_file([data_dir + "dhclient/"])).to have(1).item
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'should return an empty list' do
|
45
|
-
Util.find_leases_file([]).
|
46
|
-
Util.find_leases_file(['/tmp']).
|
45
|
+
expect(Util.find_leases_file([])).to have(0).items
|
46
|
+
expect(Util.find_leases_file(['/tmp'])).to have(0).items
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abiquo-chef-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rspec
|
@@ -31,21 +31,21 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: rspec-collection_matchers
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
none: false
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '0'
|
41
41
|
type: :development
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
none: false
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ! '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: '0'
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: jeweler
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,6 +78,22 @@ dependencies:
|
|
78
78
|
- - ! '>='
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '0'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: xml-simple
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
81
97
|
- !ruby/object:Gem::Dependency
|
82
98
|
name: run-as-root
|
83
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -225,6 +241,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
225
241
|
- - ! '>='
|
226
242
|
- !ruby/object:Gem::Version
|
227
243
|
version: '0'
|
244
|
+
segments:
|
245
|
+
- 0
|
246
|
+
hash: 2626624219569308421
|
228
247
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
229
248
|
none: false
|
230
249
|
requirements:
|