abiquo-chef-agent 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ group :development do
2
+ gem "rspec", ">= 0"
3
+ gem "bundler", "~> 1.0.0"
4
+ gem "jeweler"
5
+ gem "simplecov", ">= 0"
6
+ end
@@ -3,7 +3,7 @@ require 'xmlsimple'
3
3
  module Abiquo
4
4
  module Chef
5
5
 
6
- VERSION="1.0.7"
6
+ VERSION="1.0.8"
7
7
 
8
8
  class Config
9
9
  def self.chef_config_dir
@@ -89,6 +89,7 @@ module Abiquo
89
89
  leases = []
90
90
  search_dirs.each do |d|
91
91
  Dir["#{d}/*"].each do |f|
92
+ next if f !~ /leases$/
92
93
  leases << f
93
94
  end
94
95
  end
@@ -107,8 +108,8 @@ module Abiquo
107
108
  # :abiquo_api_token => token
108
109
  # }
109
110
  #
110
- def self.parse_leases_file
111
- files = find_leases_file
111
+ def self.parse_leases_file(search_dirs = ['/var/lib/dhcp3', '/var/lib/dhcp', '/var/lib/dhclient'])
112
+ files = find_leases_file(search_dirs)
112
113
  files.each do |file|
113
114
  f = File.open(file)
114
115
  l = {}
@@ -133,7 +134,6 @@ module Abiquo
133
134
  end
134
135
  end
135
136
  if l[:abiquo_api_token]
136
- log "Default leases file '#{file}' found"
137
137
  return l
138
138
  end
139
139
  end
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----&#xD;MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk&#xD;lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW&#xD;wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN&#xD;6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al&#xD;NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS&#xD;HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM&#xD;oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D&#xD;kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG&#xD;/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g&#xD;cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy&#xD;3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA&#xD;Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM&#xD;/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX&#xD;efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0&#xD;f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ&#xD;UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv&#xD;uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+&#xD;edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS&#xD;NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8&#xD;suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ&#xD;1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b&#xD;aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX&#xD;4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H&#xD;lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+&#xD;1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM&#xD;-----END RSA PRIVATE KEY-----</validation-cert><runlist><element>role[web-server]</element><element>recipe[apache2]</element></runlist></chef></bootstrap>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----&#xD;MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk&#xD;lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW&#xD;wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN&#xD;6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al&#xD;NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS&#xD;HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM&#xD;oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D&#xD;kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG&#xD;/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g&#xD;cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy&#xD;3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA&#xD;Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM&#xD;/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX&#xD;efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0&#xD;f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ&#xD;UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv&#xD;uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+&#xD;edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS&#xD;NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8&#xD;suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ&#xD;1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b&#xD;aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX&#xD;4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H&#xD;lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+&#xD;1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM&#xD;-----END RSA PRIVATE KEY-----</validation-cert><runlist/></chef></bootstrap>
@@ -0,0 +1,182 @@
1
+ lease {
2
+ interface "eth0";
3
+ fixed-address 192.168.0.3;
4
+ option subnet-mask 255.255.255.0;
5
+ option routers 192.168.0.1;
6
+ option dhcp-lease-time 60000;
7
+ option dhcp-message-type 5;
8
+ option domain-name-servers 8.8.8.8;
9
+ option dhcp-server-identifier 192.168.0.1;
10
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
11
+ renew 4 2011/11/17 22:59:41;
12
+ rebind 5 2011/11/18 06:41:48;
13
+ expire 5 2011/11/18 08:46:48;
14
+ }
15
+ lease {
16
+ interface "eth0";
17
+ fixed-address 192.168.0.3;
18
+ option subnet-mask 255.255.255.0;
19
+ option routers 192.168.0.1;
20
+ option dhcp-lease-time 60000;
21
+ option dhcp-message-type 5;
22
+ option domain-name-servers 8.8.8.8;
23
+ option dhcp-server-identifier 192.168.0.1;
24
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
25
+ renew 5 2011/11/18 05:48:45;
26
+ rebind 5 2011/11/18 13:34:41;
27
+ expire 5 2011/11/18 15:39:41;
28
+ }
29
+ lease {
30
+ interface "eth0";
31
+ fixed-address 192.168.0.3;
32
+ option subnet-mask 255.255.255.0;
33
+ option routers 192.168.0.1;
34
+ option dhcp-lease-time 60000;
35
+ option dhcp-message-type 5;
36
+ option domain-name-servers 8.8.8.8;
37
+ option dhcp-server-identifier 192.168.0.1;
38
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
39
+ renew 5 2011/11/18 13:07:55;
40
+ rebind 5 2011/11/18 20:23:45;
41
+ expire 5 2011/11/18 22:28:45;
42
+ }
43
+ lease {
44
+ interface "eth0";
45
+ fixed-address 192.168.0.3;
46
+ option subnet-mask 255.255.255.0;
47
+ option routers 192.168.0.1;
48
+ option dhcp-lease-time 60000;
49
+ option dhcp-message-type 5;
50
+ option domain-name-servers 8.8.8.8;
51
+ option dhcp-server-identifier 192.168.0.1;
52
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
53
+ renew 5 2011/11/18 19:28:24;
54
+ rebind 6 2011/11/19 03:42:55;
55
+ expire 6 2011/11/19 05:47:55;
56
+ }
57
+ lease {
58
+ interface "eth0";
59
+ fixed-address 192.168.0.3;
60
+ option subnet-mask 255.255.255.0;
61
+ option routers 192.168.0.1;
62
+ option dhcp-lease-time 60000;
63
+ option dhcp-message-type 5;
64
+ option domain-name-servers 8.8.8.8;
65
+ option dhcp-server-identifier 192.168.0.1;
66
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
67
+ renew 6 2011/11/19 02:52:16;
68
+ rebind 6 2011/11/19 10:03:24;
69
+ expire 6 2011/11/19 12:08:24;
70
+ }
71
+ lease {
72
+ interface "eth0";
73
+ fixed-address 192.168.0.3;
74
+ option subnet-mask 255.255.255.0;
75
+ option routers 192.168.0.1;
76
+ option dhcp-lease-time 60000;
77
+ option dhcp-message-type 5;
78
+ option domain-name-servers 8.8.8.8;
79
+ option dhcp-server-identifier 192.168.0.1;
80
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
81
+ renew 6 2011/11/19 10:49:20;
82
+ rebind 6 2011/11/19 17:27:16;
83
+ expire 6 2011/11/19 19:32:16;
84
+ }
85
+ lease {
86
+ interface "eth0";
87
+ fixed-address 192.168.0.3;
88
+ option subnet-mask 255.255.255.0;
89
+ option routers 192.168.0.1;
90
+ option dhcp-lease-time 60000;
91
+ option dhcp-message-type 5;
92
+ option domain-name-servers 8.8.8.8;
93
+ option dhcp-server-identifier 192.168.0.1;
94
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
95
+ renew 6 2011/11/19 18:18:01;
96
+ rebind 0 2011/11/20 01:24:20;
97
+ expire 0 2011/11/20 03:29:20;
98
+ }
99
+ lease {
100
+ interface "eth0";
101
+ fixed-address 192.168.0.3;
102
+ option subnet-mask 255.255.255.0;
103
+ option routers 192.168.0.1;
104
+ option dhcp-lease-time 60000;
105
+ option dhcp-message-type 5;
106
+ option domain-name-servers 8.8.8.8;
107
+ option dhcp-server-identifier 192.168.0.1;
108
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
109
+ renew 0 2011/11/20 01:22:01;
110
+ rebind 0 2011/11/20 08:53:01;
111
+ expire 0 2011/11/20 10:58:01;
112
+ }
113
+ lease {
114
+ interface "eth0";
115
+ fixed-address 192.168.0.3;
116
+ option subnet-mask 255.255.255.0;
117
+ option routers 192.168.0.1;
118
+ option dhcp-lease-time 60000;
119
+ option dhcp-message-type 5;
120
+ option domain-name-servers 8.8.8.8;
121
+ option dhcp-server-identifier 192.168.0.1;
122
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
123
+ renew 0 2011/11/20 08:56:59;
124
+ rebind 0 2011/11/20 15:57:01;
125
+ expire 0 2011/11/20 18:02:01;
126
+ }
127
+ lease {
128
+ interface "eth0";
129
+ fixed-address 192.168.0.3;
130
+ option subnet-mask 255.255.255.0;
131
+ option routers 192.168.0.1;
132
+ option dhcp-lease-time 60000;
133
+ option dhcp-message-type 5;
134
+ option domain-name-servers 8.8.8.8;
135
+ option dhcp-server-identifier 192.168.0.1;
136
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
137
+ renew 0 2011/11/20 16:03:25;
138
+ rebind 0 2011/11/20 23:32:03;
139
+ expire 1 2011/11/21 01:37:03;
140
+ }
141
+ lease {
142
+ interface "eth0";
143
+ fixed-address 192.168.0.3;
144
+ option subnet-mask 255.255.255.0;
145
+ option routers 192.168.0.1;
146
+ option dhcp-lease-time 60000;
147
+ option dhcp-message-type 5;
148
+ option domain-name-servers 8.8.8.8;
149
+ option dhcp-server-identifier 192.168.0.1;
150
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
151
+ renew 0 2011/11/20 22:57:38;
152
+ rebind 1 2011/11/21 06:38:25;
153
+ expire 1 2011/11/21 08:43:25;
154
+ }
155
+ lease {
156
+ interface "eth0";
157
+ fixed-address 192.168.0.3;
158
+ option subnet-mask 255.255.255.0;
159
+ option routers 192.168.0.1;
160
+ option dhcp-lease-time 60000;
161
+ option dhcp-message-type 5;
162
+ option domain-name-servers 8.8.8.8;
163
+ option dhcp-server-identifier 192.168.0.1;
164
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
165
+ renew 1 2011/11/21 06:46:17;
166
+ rebind 1 2011/11/21 13:32:38;
167
+ expire 1 2011/11/21 15:37:38;
168
+ }
169
+ lease {
170
+ interface "eth0";
171
+ fixed-address 192.168.0.3;
172
+ option subnet-mask 255.255.255.0;
173
+ option routers 192.168.0.1;
174
+ option dhcp-lease-time 60000;
175
+ option dhcp-message-type 5;
176
+ option domain-name-servers 8.8.8.8;
177
+ option dhcp-server-identifier 192.168.0.1;
178
+ option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
179
+ renew 1 2011/11/21 14:39:27;
180
+ rebind 1 2011/11/21 21:21:17;
181
+ expire 1 2011/11/21 23:26:17;
182
+ }
@@ -0,0 +1,2 @@
1
+ <xml>
2
+ </xml>
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'rspec/autorun'
3
+ require 'simplecov'
4
+ SimpleCov.start do
5
+ add_filter '/spec/'
6
+ end
7
+
8
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
10
+ require 'abiquo-chef-agent'
11
+
12
+ module TestHelpersMod
13
+
14
+ def data_dir
15
+ File.join(File.dirname(__FILE__),"data/")
16
+ end
17
+
18
+ end
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+ include Abiquo::Chef
3
+
4
+ describe "Bootstrap Config Parser" do
5
+ include TestHelpersMod
6
+ before do
7
+ @cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap.xml"))
8
+ end
9
+
10
+ describe "parsing" do
11
+ it "should load a valid bootstrap file" do
12
+ lambda do
13
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap.xml"))
14
+ end.should_not raise_error
15
+ end
16
+
17
+ it "should raise exception loading invalid bootstrap file" do
18
+ lambda do
19
+ BootstrapConfigParser.new(File.read(data_dir + "invalid_bootstrap.xml"))
20
+ end.should raise_error
21
+ end
22
+ end
23
+
24
+ describe "name" do
25
+ it "should be a string" do
26
+ @cp.node_name.should be_a(String)
27
+ end
28
+ it "should start with ABQ-" do
29
+ @cp.node_name.should match(/^ABQ-/)
30
+ end
31
+ end
32
+
33
+ describe "run_list" do
34
+ it "should be an Array" do
35
+ @cp.run_list.should be_a(Array)
36
+ end
37
+
38
+ it "should be an empty Array" do
39
+ cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_runlist.xml"))
40
+ cp.run_list.should be_empty
41
+ end
42
+
43
+ it "should have a two items in the runlist" do
44
+ @cp.run_list.should have(2).items
45
+ end
46
+
47
+ it "should be an array of strings" do
48
+ @cp.run_list.each do |i|
49
+ i.should be_a(String)
50
+ end
51
+ end
52
+
53
+ it "should have a recipe and a role" do
54
+ @cp.run_list.first.should match(/role\[/)
55
+ @cp.run_list.last.should match(/recipe\[/)
56
+ end
57
+ end
58
+
59
+ describe "chef-server-url" do
60
+ it "should be a URL" do
61
+ @cp.chef_server_url.should match(/^http(s)?:\/\//)
62
+ end
63
+ end
64
+
65
+ describe "validation-client-name" do
66
+ it "should be a String" do
67
+ @cp.validation_client_name.should be_a(String)
68
+ end
69
+ end
70
+
71
+ describe "validation_cert" do
72
+ it 'should start with -----BEGIN RSA PRIVATE KEY' do
73
+ @cp.validation_cert.should match(/^-----BEGIN RSA PRIVATE KEY/)
74
+ end
75
+ it 'should end with END RSA PRIVATE KEY-----' do
76
+ @cp.validation_cert.should match(/END RSA PRIVATE KEY-----$/)
77
+ end
78
+ end
79
+
80
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe Abiquo::Chef::Config do
4
+ before do
5
+ @config = Abiquo::Chef::Config
6
+ end
7
+
8
+ describe "default options" do
9
+
10
+ it "should have a valid chef_config_dir" do
11
+ @config.chef_config_dir.should be_a(String)
12
+ end
13
+
14
+ it "should have a valid ntp_server" do
15
+ @config.ntp_server.should be_a(String)
16
+ end
17
+
18
+ it "should have a valid log_file" do
19
+ @config.log_file.should be_a(String)
20
+ end
21
+
22
+ it "should have a valid bootstrap_backup_file" do
23
+ @config.bootstrap_backup_file.should be_a(String)
24
+ end
25
+
26
+ it "should have a valid validation_cert" do
27
+ @config.validation_cert.should be_a(String)
28
+ end
29
+
30
+ it "should have a valid client_cert_file" do
31
+ @config.client_cert_file.should be_a(String)
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+ include Abiquo::Chef
3
+
4
+ describe Util do
5
+ include TestHelpersMod
6
+
7
+ before do
8
+ @leases = Util.parse_leases_file([data_dir + "dhclient/"])
9
+ end
10
+
11
+ describe 'parse_leases_file' do
12
+ it 'parse leases file without error' do
13
+ @leases.should be_a(Hash)
14
+ end
15
+
16
+ it 'should not be empty' do
17
+ @leases.should_not be_empty
18
+ end
19
+
20
+ it 'should find a valid ip address' do
21
+ @leases[:ip].should match(/([0-9]{1,3}\.){3}[0-9]{1,3}/)
22
+ end
23
+
24
+ it 'should have a valid API URL' do
25
+ @leases[:abiquo_api_url].should match(/http(s)?:\/\//)
26
+ end
27
+ it 'should have a valid token' do
28
+ @leases[:abiquo_api_token].should have_at_least(5).characters
29
+ end
30
+ #it 'should have a valid mac' do
31
+ # #@leases[:mac].should match(/([a-f]{2}:){3}[a-f]{2}/m)
32
+ #end
33
+
34
+ end
35
+
36
+ describe 'find_leases_file' do
37
+ it 'should find a lease file' do
38
+ Util.find_leases_file([data_dir + "dhclient/"]).should have(1).item
39
+ end
40
+
41
+ it 'should return an empty list' do
42
+ Util.find_leases_file([]).should have(0).items
43
+ Util.find_leases_file(['/tmp']).should have(0).items
44
+ end
45
+ end
46
+
47
+ end
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: 1.0.7
4
+ version: 1.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,55 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-16 00:00:00.000000000 Z
12
+ date: 2011-11-21 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &8789080 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *8789080
25
+ - !ruby/object:Gem::Dependency
26
+ name: bundler
27
+ requirement: &8787780 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *8787780
36
+ - !ruby/object:Gem::Dependency
37
+ name: jeweler
38
+ requirement: &8861900 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *8861900
47
+ - !ruby/object:Gem::Dependency
48
+ name: simplecov
49
+ requirement: &8859440 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *8859440
14
58
  - !ruby/object:Gem::Dependency
15
59
  name: run-as-root
16
- requirement: &16321900 !ruby/object:Gem::Requirement
60
+ requirement: &8858860 !ruby/object:Gem::Requirement
17
61
  none: false
18
62
  requirements:
19
63
  - - ! '>='
@@ -21,10 +65,10 @@ dependencies:
21
65
  version: '0'
22
66
  type: :runtime
23
67
  prerelease: false
24
- version_requirements: *16321900
68
+ version_requirements: *8858860
25
69
  - !ruby/object:Gem::Dependency
26
70
  name: chef
27
- requirement: &16337700 !ruby/object:Gem::Requirement
71
+ requirement: &8858080 !ruby/object:Gem::Requirement
28
72
  none: false
29
73
  requirements:
30
74
  - - ! '>='
@@ -32,10 +76,10 @@ dependencies:
32
76
  version: '0'
33
77
  type: :runtime
34
78
  prerelease: false
35
- version_requirements: *16337700
79
+ version_requirements: *8858080
36
80
  - !ruby/object:Gem::Dependency
37
81
  name: daemons
38
- requirement: &16336920 !ruby/object:Gem::Requirement
82
+ requirement: &8857380 !ruby/object:Gem::Requirement
39
83
  none: false
40
84
  requirements:
41
85
  - - ! '>='
@@ -43,10 +87,10 @@ dependencies:
43
87
  version: '0'
44
88
  type: :runtime
45
89
  prerelease: false
46
- version_requirements: *16336920
90
+ version_requirements: *8857380
47
91
  - !ruby/object:Gem::Dependency
48
92
  name: rest-client
49
- requirement: &16336120 !ruby/object:Gem::Requirement
93
+ requirement: &9016680 !ruby/object:Gem::Requirement
50
94
  none: false
51
95
  requirements:
52
96
  - - ! '>='
@@ -54,10 +98,10 @@ dependencies:
54
98
  version: '0'
55
99
  type: :runtime
56
100
  prerelease: false
57
- version_requirements: *16336120
101
+ version_requirements: *9016680
58
102
  - !ruby/object:Gem::Dependency
59
103
  name: xml-simple
60
- requirement: &16335440 !ruby/object:Gem::Requirement
104
+ requirement: &9014900 !ruby/object:Gem::Requirement
61
105
  none: false
62
106
  requirements:
63
107
  - - ! '>='
@@ -65,7 +109,7 @@ dependencies:
65
109
  version: '0'
66
110
  type: :runtime
67
111
  prerelease: false
68
- version_requirements: *16335440
112
+ version_requirements: *9014900
69
113
  description: Abiquo Chef Agent
70
114
  email: srubio@abiquo.com
71
115
  executables:
@@ -75,6 +119,7 @@ extra_rdoc_files:
75
119
  - LICENSE.txt
76
120
  - README.md
77
121
  files:
122
+ - Gemfile
78
123
  - LICENSE.txt
79
124
  - README.md
80
125
  - Rakefile
@@ -83,6 +128,14 @@ files:
83
128
  - scripts/abiquo-chef-agent.init
84
129
  - scripts/debian/abiquo-chef-agent.conf.upstart
85
130
  - scripts/debian/chef-client.defaults
131
+ - spec/data/bootstrap.xml
132
+ - spec/data/bootstrap_empty_runlist.xml
133
+ - spec/data/dhclient/dhclient.leases
134
+ - spec/data/invalid_bootstrap.xml
135
+ - spec/spec_helper.rb
136
+ - spec/unit/bootstrap_config_parser_spec.rb
137
+ - spec/unit/config_spec.rb
138
+ - spec/unit/util_spec.rb
86
139
  homepage: http://github.com/abiquo/abiquo-chef-agent
87
140
  licenses:
88
141
  - MIT