abiquo-chef-agent 1.0.11 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  = abiquo-chef-agent
2
2
 
3
- Description goes here.
3
+ A simple boot time execution daemon that allow to execute the Chef configuration of an Abiquo virtual machine.
4
4
 
5
5
  == Contributing to abiquo-chef-agent
6
6
 
data/Rakefile CHANGED
@@ -12,8 +12,8 @@ Jeweler::Tasks.new do |gem|
12
12
  gem.license = "MIT"
13
13
  gem.summary = %Q{Abiquo Chef Agent}
14
14
  gem.description = %Q{Abiquo Chef Agent}
15
- gem.email = "salvador.girones@abiquo.com"
16
- gem.authors = ["Salvador Girones", "Sergio Rubio"]
15
+ gem.email = "ruby-gems@abiquo.com"
16
+ gem.authors = ["Salvador Girones", "Sergio Rubio", "Serafin Sedano"]
17
17
  gem.add_runtime_dependency 'run-as-root'
18
18
  gem.add_runtime_dependency 'chef'
19
19
  gem.add_runtime_dependency 'daemons'
data/bin/abiquo-chef-run CHANGED
@@ -77,7 +77,7 @@ else
77
77
  rescue Exception => e
78
78
  log "Error requesting node info from API", :error
79
79
  log e.message, :error
80
- log e.backtrace.join("\n "), :debug
80
+ log e.backtrace.join("\n ")
81
81
  exit 1
82
82
  end
83
83
  #
@@ -97,7 +97,7 @@ else
97
97
  rescue Exception => e
98
98
  log "Error parsing XML bootstrap file", :error
99
99
  log e.message, :error
100
- log e.backtrace.join("\n "), :debug
100
+ log e.backtrace.join("\n ")
101
101
  exit 1
102
102
  end
103
103
 
@@ -107,18 +107,18 @@ else
107
107
  File.open(Abiquo::Chef::Config.validation_cert, 'w') do |f|
108
108
  f.puts bootstrap_config.validation_cert
109
109
  end
110
+ log "Validation cert written"
110
111
 
111
112
  #
112
113
  # Get required node info and write chef-client config file
113
114
  #
114
115
  validation_client_name = bootstrap_config.validation_client_name
115
116
  chef_server_url = bootstrap_config.chef_server_url
116
- recipes = bootstrap_config.run_list
117
- if recipes.empty?
118
- log "No recipes selected", :warning
119
- recipes = []
117
+ node_config = bootstrap_config.node_config
118
+ if node_config['run_list']
119
+ log "Recipes found #{node_config.inspect}"
120
120
  else
121
- log "Recipes found #{recipes.inspect}"
121
+ log "No recipes selected", :warning
122
122
  end
123
123
  File.open('/etc/chef/client.rb', 'w') do |f|
124
124
  f.puts "log_level :info"
@@ -130,20 +130,11 @@ else
130
130
  #
131
131
  # Write first-boot.json attributes
132
132
  #
133
- if not recipes.empty?
134
- recipes_json = '"run_list": ['
135
- recipes_json << (recipes.map{ |r| "\"#{r}\""}).join(',')
136
- recipes_json << ']'
137
- File.open('/etc/chef/first-boot.json', 'w') do |f|
138
- f.puts "{"
139
- f.puts recipes_json
140
- f.puts "}"
141
- end
142
- else
143
- File.open('/etc/chef/first-boot.json', 'w') do |f|
144
- f.puts "{}"
145
- end
133
+ File.open('/etc/chef/first-boot.json', 'w') do |f|
134
+ node_config ||= {}
135
+ f.puts node_config.to_json
146
136
  end
137
+ log "Written '#{node_config.to_json}' to /etc/chef/first-boot.json file"
147
138
 
148
139
 
149
140
  #
@@ -153,7 +144,7 @@ else
153
144
 
154
145
  log "Setting hostname"
155
146
  output = `hostname #{node_name} 2>&1`
156
- log output, :debug
147
+ log output, :info
157
148
 
158
149
  net_config_file = '/etc/sysconfig/network'
159
150
  if File.exists? net_config_file
@@ -192,7 +183,7 @@ else
192
183
  end
193
184
  if $? != 0
194
185
  log "chef-client run failed", :error
195
- log output, :debug
186
+ log output, :info
196
187
  else
197
188
  log "Running chef-client in daemon mode"
198
189
  # Run the chef-client if not already running
@@ -202,7 +193,7 @@ else
202
193
  output = `#{cmd}`
203
194
  if $? != 0
204
195
  log "Running chef-client in daemon mode failed.", :error
205
- log output, :debug
196
+ log output
206
197
  else
207
198
  log "Success."
208
199
  end
@@ -1,9 +1,10 @@
1
1
  require 'xmlsimple'
2
+ require 'json'
2
3
 
3
4
  module Abiquo
4
5
  module Chef
5
6
 
6
- VERSION="1.0.11"
7
+ VERSION="2.0.0"
7
8
 
8
9
  class Config
9
10
  def self.chef_config_dir
@@ -34,7 +35,7 @@ module Abiquo
34
35
 
35
36
  class BootstrapConfigParser
36
37
 
37
- attr_reader :run_list, :node_name, :validation_client_name
38
+ attr_reader :node_config, :node_name, :validation_client_name
38
39
  attr_reader :chef_server_url, :validation_cert
39
40
 
40
41
  #
@@ -44,38 +45,42 @@ module Abiquo
44
45
  #
45
46
  def initialize(xml)
46
47
  @raw_xml = xml
47
- #
48
48
  # HACK, FIXME
49
- #
50
49
  @hash = XmlSimple.xml_in xml.gsub("&#xD;","\n")
51
50
  parse
52
51
  end
53
52
 
54
53
  def parse
54
+ validate
55
55
  @node_name = @hash['node'].first
56
- if not @node_name or @node_name.strip.chomp.empty?
57
- raise Exception.new("Invalid bootstrap XML. Missing <node> info.")
58
- end
56
+ raise Exception.new("Invalid bootstrap XML. Missing <node> info.") unless @node_name.is_a? String and not @node_name.strip.chomp.empty?
59
57
 
60
58
  @node_info = @hash['chef'].first
61
- if not @node_info
62
- raise Exception.new("Invalid bootstrap XML. Missing <chef> info.")
63
- end
64
59
 
65
60
  @validation_client_name = @node_info['validation-client-name'].first
66
- if not @validation_client_name or @validation_client_name.strip.chomp.empty?
67
- raise Exception.new("Invalid bootstrap XML. Missing <validation-client-name> info.")
68
- end
61
+ raise Exception.new("Invalid bootstrap XML. Missing <validation-client-name> info.") unless @validation_client_name.is_a? String and not @validation_client_name.strip.chomp.empty?
69
62
 
70
63
  @validation_cert = @node_info['validation-cert'].first
71
- if not @validation_cert or @validation_cert.strip.chomp.empty?
72
- raise Exception.new("Invalid bootstrap XML. Missing <validation-cert> info.")
73
- end
64
+ raise Exception.new("Invalid bootstrap XML. Missing <validation-cert> info.") unless @validation_cert.is_a? String and not @validation_cert.strip.chomp.empty?
65
+
74
66
  @chef_server_url = @node_info['chef-server-url'].first
75
- if not @chef_server_url or @chef_server_url.strip.chomp.empty?
76
- raise Exception.new("Invalid bootstrap XML. Missing <chef-server-url> info.")
77
- end
78
- @run_list = @node_info['runlist'].first['element'] || []
67
+ raise Exception.new("Invalid bootstrap XML. Missing <chef-server-url> info.") unless @chef_server_url.is_a? String and not @chef_server_url.strip.chomp.empty?
68
+
69
+ runlist = @node_info['runlist'].first['element']
70
+ attributes = @node_info['attributes'].first unless @node_info['attributes'].nil?
71
+ @node_config = JSON.parse(attributes || '{}')
72
+ @node_config.merge!(JSON.parse("{\"run_list\" : [#{runlist.map{ |r| "\"#{r}\""}.join(',')}]}")) if runlist
73
+ end
74
+
75
+ private
76
+
77
+ def validate
78
+ raise Exception.new "Invalid bootstrap XML. Missing <node> element." unless @hash.has_key? 'node'
79
+ raise Exception.new "Invalid bootstrap XML. Missing <chef> element." unless @hash.has_key? 'chef'
80
+ raise Exception.new("Invalid bootstrap XML. Missing <chef> info.") if @hash['chef'].empty? or @hash['chef'][0].empty?
81
+ raise Exception.new "Invalid bootstrap XML. Missing <validation-cert> element." unless @hash['chef'].first.has_key? 'validation-cert'
82
+ raise Exception.new "Invalid bootstrap XML. Missing <validation-client-name> element." unless @hash['chef'].first.has_key? 'validation-client-name'
83
+ raise Exception.new "Invalid bootstrap XML. Missing <chef-server-url> element." unless @hash['chef'].first.has_key? 'chef-server-url'
79
84
  end
80
85
 
81
86
  end
@@ -142,3 +147,4 @@ module Abiquo
142
147
  end
143
148
  end
144
149
  end
150
+
@@ -1 +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>
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+cwBAoGBAM29a/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><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "00000000000000000",&#xD; "key": "0000000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "000000000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "00000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></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><validation-cert /><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><runlist/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "0000000000000000",&#xD; "key": "0000000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "000000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></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 /></bootstrap>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node></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;uXcSeNupODhC44uH3HE6LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+&#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/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "00000000000000000",&#xD; "key": "000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "0000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "00000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></chef></bootstrap>
@@ -1 +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>
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/bRnE8Fb4h9+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/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "000000000000000000",&#xD; "key": "00000000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "00000000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "00000000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></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+bJ/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 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><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;edWoFEFhFWl5Yau41g0wvdNPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS&#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/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "00000000000000",&#xD; "key": "00000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "000000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "00000000000000000"&#xD; }&#xD; }&#xD;}</attributes></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></validation-client-name><validation-cert /><runlist/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "0000000000000000000000",&#xD; "key": "000000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "0000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></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><runlist/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "000000000000000000",&#xD; "key": "000000000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "00000000000000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "000000000000000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></chef></bootstrap>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node></bootstrap>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><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;edWoFEFhFWl5Yau410wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS&#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/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "0000000000000000000000000",&#xD; "key": "0000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "0000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></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><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+YB36cHqDTbWOM8ykBcdHCL0eczvComocAiKWfJX9ZNWM&#xD;-----END RSA PRIVATE KEY-----</validation-cert><runlist/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "000000000000000000000",&#xD; "key": "0000000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "0000000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "000000000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></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-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/bRGxE8Fb4h9+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/><attributes>{&#xD; "boundary": {&#xD; "api": {&#xD; "org_id": "00000000000000000",&#xD; "key": "000000000000000000"&#xD; }&#xD; },&#xD; "newrelic": {&#xD; "server_monitoring": {&#xD; "license": "000000000000000000000000000"&#xD; },&#xD; "application_monitoring": {&#xD; "license": "0000000000000000000"&#xD; }&#xD; }&#xD;}</attributes></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/J607dgAW1FlYCiojI0qIRKPkvdotQ3M+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>
@@ -8,6 +8,8 @@ lease {
8
8
  option domain-name-servers 8.8.8.8;
9
9
  option dhcp-server-identifier 192.168.0.1;
10
10
  option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
11
+ option domain-name "abiquo.com";
12
+ option hardware ethernet 00:00:00:00:00:00;
11
13
  renew 4 2011/11/17 22:59:41;
12
14
  rebind 5 2011/11/18 06:41:48;
13
15
  expire 5 2011/11/18 08:46:48;
@@ -9,72 +9,155 @@ describe "Bootstrap Config Parser" do
9
9
 
10
10
  describe "parsing" do
11
11
  it "should load a valid bootstrap file" do
12
- lambda do
12
+ expect {
13
13
  BootstrapConfigParser.new(File.read(data_dir + "bootstrap.xml"))
14
- end.should_not raise_error
14
+ }.to_not raise_error
15
15
  end
16
16
 
17
17
  it "should raise exception loading invalid bootstrap file" do
18
- lambda do
18
+ expect {
19
19
  BootstrapConfigParser.new(File.read(data_dir + "invalid_bootstrap.xml"))
20
- end.should raise_error
20
+ }.to raise_error
21
21
  end
22
- end
23
22
 
24
- describe "name" do
25
- it "should be a string" do
26
- @cp.node_name.should be_a(String)
23
+ it "should raise exception loading invalid bootstrap file missing validation" do
24
+ expect {
25
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_validation.xml"))
26
+ }.to raise_error /Missing <validation-client-name> element/
27
27
  end
28
- it "should start with ABQ-" do
29
- @cp.node_name.should match(/^ABQ-/)
28
+
29
+ it "should raise exception loading invalid bootstrap file missing server url" do
30
+ expect {
31
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_server_url.xml"))
32
+ }.to raise_error /Missing <chef-server-url> element/
30
33
  end
31
- end
32
34
 
33
- describe "run_list" do
34
- it "should be an Array" do
35
- @cp.run_list.should be_a(Array)
35
+ it "should raise exception loading invalid bootstrap file missing node" do
36
+ expect {
37
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_node.xml"))
38
+ }.to raise_error /Missing <node> element/
36
39
  end
37
40
 
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
+ it "should raise exception loading invalid bootstrap file missing chef" do
42
+ expect {
43
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_chef.xml"))
44
+ }.to raise_error /Missing <chef> element/
41
45
  end
42
46
 
43
- it "should have a two items in the runlist" do
44
- @cp.run_list.should have(2).items
47
+ it "should raise exception loading invalid bootstrap file missing cert" do
48
+ expect {
49
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_cert.xml"))
50
+ }.to raise_error /Missing <validation-cert> element/
45
51
  end
46
52
 
47
- it "should be an array of strings" do
48
- @cp.run_list.each do |i|
49
- i.should be_a(String)
50
- end
53
+ it "should raise exception loading invalid bootstrap file empty validation" do
54
+ expect {
55
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_validation.xml"))
56
+ }.to raise_error /Missing <validation-client-name> info/
51
57
  end
52
58
 
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\[/)
59
+ it "should raise exception loading invalid bootstrap file empty server url" do
60
+ expect {
61
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_server_url.xml"))
62
+ }.to raise_error /Missing <chef-server-url> info/
56
63
  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)?:\/\//)
64
+
65
+ it "should raise exception loading invalid bootstrap file empty node" do
66
+ expect {
67
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_node.xml"))
68
+ }.to raise_error /Missing <node> info/
62
69
  end
63
- end
64
70
 
65
- describe "validation-client-name" do
66
- it "should be a String" do
67
- @cp.validation_client_name.should be_a(String)
71
+ it "should raise exception loading invalid bootstrap file empty chef" do
72
+ expect {
73
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_chef.xml"))
74
+ }.to raise_error /Missing <chef> info/
68
75
  end
69
- end
70
76
 
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/)
77
+ it "should raise exception loading invalid bootstrap file empty cert" do
78
+ expect {
79
+ BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_cert.xml"))
80
+ }.to raise_error /Missing <validation-cert> info/
74
81
  end
75
- it 'should end with END RSA PRIVATE KEY-----' do
76
- @cp.validation_cert.should match(/END RSA PRIVATE KEY-----$/)
82
+
83
+
84
+ describe "name" do
85
+ it "should be a string" do
86
+ @cp.node_name.should be_a(String)
87
+ end
88
+ it "should start with ABQ-" do
89
+ @cp.node_name.should match(/^ABQ-/)
90
+ end
91
+ end
92
+
93
+ describe "node_config" do
94
+ it "should be a Hash" do
95
+ @cp.node_config.should be_a(Hash)
96
+ end
97
+
98
+ it "runlist should be an empty missing" do
99
+ cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_runlist.xml"))
100
+ expect(cp.node_config).not_to have_key("run_list")
101
+ end
102
+
103
+ it "should have three elements" do
104
+ @cp.node_config.should have(3).items
105
+ end
106
+
107
+ it "runlist should have a two items in the runlist" do
108
+ @cp.node_config["run_list"].should have(2).items
109
+ end
110
+
111
+ it "should be an array of strings" do
112
+ @cp.node_config["run_list"].each do |i|
113
+ i.should be_a(String)
114
+ end
115
+ end
116
+
117
+ it "should have a recipe and a role" do
118
+ @cp.node_config["run_list"].first.should match(/role\[/)
119
+ @cp.node_config["run_list"].last.should match(/recipe\[/)
120
+ end
121
+
122
+ it "should contains boundary and newrelic" do
123
+ expect(@cp.node_config).to have_key("boundary")
124
+ expect(@cp.node_config).to have_key("newrelic")
125
+ end
126
+
127
+ it "attributes should be missing" do
128
+ cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap_no_attributes.xml"))
129
+ expect(cp.node_config).not_to have_key("boundary")
130
+ expect(cp.node_config).not_to have_key("newrelic")
131
+ expect(cp.node_config).to have_key("run_list")
132
+ end
133
+
134
+ it "attributes should be missing" do
135
+ cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_runlist_no_attributes.xml"))
136
+ cp.node_config.size.should be(0)
137
+ end
138
+
77
139
  end
78
- end
79
140
 
141
+ describe "chef-server-url" do
142
+ it "should be a URL" do
143
+ @cp.chef_server_url.should match(/^http(s)?:\/\//)
144
+ end
145
+ end
146
+
147
+ describe "validation-client-name" do
148
+ it "should be a String" do
149
+ @cp.validation_client_name.should be_a(String)
150
+ end
151
+ end
152
+
153
+ describe "validation_cert" do
154
+ it 'should start with -----BEGIN RSA PRIVATE KEY' do
155
+ @cp.validation_cert.should match(/^-----BEGIN RSA PRIVATE KEY/)
156
+ end
157
+ it 'should end with END RSA PRIVATE KEY-----' do
158
+ @cp.validation_cert.should match(/END RSA PRIVATE KEY-----$/)
159
+ end
160
+ end
161
+
162
+ end
80
163
  end
metadata CHANGED
@@ -1,161 +1,171 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: abiquo-chef-agent
3
- version: !ruby/object:Gem::Version
4
- hash: 1
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 0
9
- - 11
10
- version: 1.0.11
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Salvador Girones
14
9
  - Sergio Rubio
10
+ - Serafin Sedano
15
11
  autorequire:
16
12
  bindir: bin
17
13
  cert_chain: []
18
-
19
- date: 2012-10-26 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- version_requirements: *id001
14
+ date: 2013-09-19 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
32
17
  name: rspec
33
- prerelease: false
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
34
24
  type: :development
35
- - !ruby/object:Gem::Dependency
36
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: bundler
34
+ requirement: !ruby/object:Gem::Requirement
37
35
  none: false
38
- requirements:
36
+ requirements:
39
37
  - - ~>
40
- - !ruby/object:Gem::Version
41
- hash: 23
42
- segments:
43
- - 1
44
- - 0
45
- - 0
38
+ - !ruby/object:Gem::Version
46
39
  version: 1.0.0
47
- version_requirements: *id002
48
- name: bundler
49
- prerelease: false
50
40
  type: :development
51
- - !ruby/object:Gem::Dependency
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
61
- version_requirements: *id003
62
- name: jeweler
63
41
  prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0
48
+ - !ruby/object:Gem::Dependency
49
+ name: jeweler
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
64
56
  type: :development
65
- - !ruby/object:Gem::Dependency
66
- requirement: &id004 !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
75
- version_requirements: *id004
76
- name: simplecov
77
57
  prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ - !ruby/object:Gem::Dependency
65
+ name: simplecov
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
78
72
  type: :development
79
- - !ruby/object:Gem::Dependency
80
- requirement: &id005 !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
89
- version_requirements: *id005
90
- name: run-as-root
91
73
  prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ - !ruby/object:Gem::Dependency
81
+ name: run-as-root
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
92
88
  type: :runtime
93
- - !ruby/object:Gem::Dependency
94
- requirement: &id006 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
103
- version_requirements: *id006
104
- name: chef
105
89
  prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: chef
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
106
104
  type: :runtime
107
- - !ruby/object:Gem::Dependency
108
- requirement: &id007 !ruby/object:Gem::Requirement
109
- none: false
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- hash: 3
114
- segments:
115
- - 0
116
- version: "0"
117
- version_requirements: *id007
118
- name: daemons
119
105
  prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: daemons
114
+ requirement: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
120
  type: :runtime
121
- - !ruby/object:Gem::Dependency
122
- requirement: &id008 !ruby/object:Gem::Requirement
123
- none: false
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 3
128
- segments:
129
- - 0
130
- version: "0"
131
- version_requirements: *id008
132
- name: rest-client
133
121
  prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ - !ruby/object:Gem::Dependency
129
+ name: rest-client
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
134
136
  type: :runtime
135
- - !ruby/object:Gem::Dependency
136
- requirement: &id009 !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- hash: 3
142
- segments:
143
- - 0
144
- version: "0"
145
- version_requirements: *id009
146
- name: xml-simple
147
137
  prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: xml-simple
146
+ requirement: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
148
152
  type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
149
160
  description: Abiquo Chef Agent
150
- email: salvador.girones@abiquo.com
151
- executables:
161
+ email: ruby-gems@abiquo.com
162
+ executables:
152
163
  - abiquo-chef-run
153
164
  extensions: []
154
-
155
- extra_rdoc_files:
165
+ extra_rdoc_files:
156
166
  - LICENSE.txt
157
167
  - README.md
158
- files:
168
+ files:
159
169
  - Gemfile
160
170
  - LICENSE.txt
161
171
  - README.md
@@ -166,7 +176,19 @@ files:
166
176
  - scripts/debian/abiquo-chef-agent.conf.upstart
167
177
  - scripts/debian/chef-client.defaults
168
178
  - spec/data/bootstrap.xml
179
+ - spec/data/bootstrap_empty_cert.xml
180
+ - spec/data/bootstrap_empty_chef.xml
181
+ - spec/data/bootstrap_empty_node.xml
169
182
  - spec/data/bootstrap_empty_runlist.xml
183
+ - spec/data/bootstrap_empty_runlist_no_attributes.xml
184
+ - spec/data/bootstrap_empty_server_url.xml
185
+ - spec/data/bootstrap_empty_validation.xml
186
+ - spec/data/bootstrap_missing_cert.xml
187
+ - spec/data/bootstrap_missing_chef.xml
188
+ - spec/data/bootstrap_missing_node.xml
189
+ - spec/data/bootstrap_missing_server_url.xml
190
+ - spec/data/bootstrap_missing_validation.xml
191
+ - spec/data/bootstrap_no_attributes.xml
170
192
  - spec/data/dhclient/dhclient.leases
171
193
  - spec/data/invalid_bootstrap.xml
172
194
  - spec/spec_helper.rb
@@ -174,37 +196,28 @@ files:
174
196
  - spec/unit/config_spec.rb
175
197
  - spec/unit/util_spec.rb
176
198
  homepage: http://github.com/abiquo/abiquo-chef-agent
177
- licenses:
199
+ licenses:
178
200
  - MIT
179
201
  post_install_message:
180
202
  rdoc_options: []
181
-
182
- require_paths:
203
+ require_paths:
183
204
  - lib
184
- required_ruby_version: !ruby/object:Gem::Requirement
205
+ required_ruby_version: !ruby/object:Gem::Requirement
185
206
  none: false
186
- requirements:
187
- - - ">="
188
- - !ruby/object:Gem::Version
189
- hash: 3
190
- segments:
191
- - 0
192
- version: "0"
193
- required_rubygems_version: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ! '>='
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
212
  none: false
195
- requirements:
196
- - - ">="
197
- - !ruby/object:Gem::Version
198
- hash: 3
199
- segments:
200
- - 0
201
- version: "0"
213
+ requirements:
214
+ - - ! '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
202
217
  requirements: []
203
-
204
218
  rubyforge_project:
205
- rubygems_version: 1.8.11
219
+ rubygems_version: 1.8.24
206
220
  signing_key:
207
221
  specification_version: 3
208
222
  summary: Abiquo Chef Agent
209
223
  test_files: []
210
-