dtk-node-agent 0.6.6 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ODVhMGY3YTdhZWQwN2Q4ZTZmMmI5ODgzYzNiNTkxMTRiYzg4MjkyNg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NTI5NDk3NGUyOTIyZTI5ZjNlZmNkMDNkMTg4ZGJkNDE5YmYwNDRjMg==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZjI2MzM4M2M4NDA2OTZmNjA1ZjNlYjA2OWMwYTk0MTY2ZjYyZTA0YmZmZTMz
|
10
|
+
NzY0ODUwYmMxMzQzYWVmMDYzYmJlZThjN2RkYzE3YWM3NTdlNWYyNTZlOWVh
|
11
|
+
MGI3MzZhYjk2NmMzOTkzYTY0MjFlNTdhZGQwOTY2YTE3NWU2Y2M=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MzYyNWRkN2NlMTU4MWJkNGY3OGVhNzhmNWQ2OTg0ZDk2M2I0ZmY2ZWIyZjcx
|
14
|
+
MjIxMTFhYmI0NWNkOTNlMmMxNzBiYzBjZGU4YTUwZjA0OTJlNDM5NDViNTJj
|
15
|
+
YzllNWNmMDBiMzQ3Y2U1N2Q3NjgxZjcwYmMwOTJiYmNiYjQ0MjQ=
|
@@ -21,19 +21,8 @@ module MCollective
|
|
21
21
|
File.open(rsa_pub_path,"w"){|f|f.print request[:agent_ssh_key_public]}
|
22
22
|
end
|
23
23
|
|
24
|
-
#
|
25
|
-
|
26
|
-
fp = request[:server_ssh_rsa_fingerprint]
|
27
|
-
if File.exists?(known_hosts)
|
28
|
-
fp_key = (fp =~ Regexp.new("^[|]1[|]([^=]+)=");$1)
|
29
|
-
if fp_key
|
30
|
-
fp_key_regexp = Regexp.new("^.1.#{fp_key}")
|
31
|
-
skip = !!File.open(known_hosts){|f|f.find{|line|line =~ fp_key_regexp}}
|
32
|
-
end
|
33
|
-
end
|
34
|
-
unless skip
|
35
|
-
File.open(known_hosts,"a"){|f|f.print request[:server_ssh_rsa_fingerprint]}
|
36
|
-
end
|
24
|
+
# add rsa_fingerprint to known hsots; server logic makes sure that is not requested twice so no duplicates
|
25
|
+
File.open(known_hosts,"a"){|f|f.print request[:server_ssh_rsa_fingerprint]}
|
37
26
|
|
38
27
|
reply.data = { :status => :succeeded}
|
39
28
|
rescue Exception => e
|
@@ -139,6 +139,7 @@ module MCollective
|
|
139
139
|
Thread.current[:task_id] = task_id
|
140
140
|
clean_state()
|
141
141
|
ret = nil
|
142
|
+
runtime_errors = nil # in contast to compile errors
|
142
143
|
# TODO: harmonize request[:top_task_id] and top_task_id()
|
143
144
|
dtk_puppet_cache = DTKPuppetCache.new(@service_name,top_task_id())
|
144
145
|
log_file_path = dtk_puppet_cache.log_file_path(inter_node_stage)
|
@@ -199,18 +200,20 @@ module MCollective
|
|
199
200
|
return_code = ((report_status == :failed || report_info[:errors]) ? 1 : exit_status)
|
200
201
|
ret ||= Response.new()
|
201
202
|
if return_code == 0
|
202
|
-
if
|
203
|
-
@log.info("dynamic_attributes = #{
|
204
|
-
|
203
|
+
if dynamic_attr_info = has_dynamic_attributes?(cmps_with_attrs)
|
204
|
+
@log.info("dynamic_attributes = #{dynamic_attr_info.inspect}")
|
205
|
+
process_dynamic_attributes!(ret,dynamic_attr_info)
|
206
|
+
else
|
207
|
+
ret.set_status_succeeded!()
|
205
208
|
end
|
206
|
-
ret.set_status_succeeded!()
|
207
209
|
else
|
208
210
|
ret.set_status_failed!()
|
209
211
|
error_info = {
|
210
212
|
:return_code => return_code
|
211
213
|
}
|
212
|
-
|
213
|
-
|
214
|
+
if runtime_errors = (report_info||{})[:errors]
|
215
|
+
error_info[:errors] = runtime_errors.map{|e|e.merge(:type => "user_error")}
|
216
|
+
end
|
214
217
|
ret.merge!(error_info)
|
215
218
|
end
|
216
219
|
rescue Exception => e
|
@@ -233,11 +236,14 @@ module MCollective
|
|
233
236
|
stderr_msg = stderr_capture.read
|
234
237
|
stderr_capture.close
|
235
238
|
stderr_capture.unlink
|
236
|
-
if
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
239
|
+
# dont look for compile errors if runtime errors
|
240
|
+
unless runtime_errors
|
241
|
+
if err_message = compile_error_message?(return_code,stderr_msg,log_file_path)
|
242
|
+
ret[:errors] = [{:message => err_message, :type => "user_error" }]
|
243
|
+
ret.set_status_failed!()
|
244
|
+
Puppet::err stderr_msg
|
245
|
+
Puppet::info "(end)"
|
246
|
+
end
|
241
247
|
end
|
242
248
|
end
|
243
249
|
Puppet::Util::Log.close_all()
|
@@ -249,12 +255,20 @@ module MCollective
|
|
249
255
|
if stderr_msg and not stderr_msg.empty?
|
250
256
|
stderr_msg
|
251
257
|
elsif return_code != 0
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
258
|
+
rest_reverse = Array.new
|
259
|
+
error = nil
|
260
|
+
begin
|
261
|
+
File.open(log_file_path).read.split("\n").reverse_each do |line|
|
262
|
+
if line =~ /^.+Puppet \(err\):\s*(.+$)/
|
263
|
+
error = $1
|
264
|
+
break
|
265
|
+
else
|
266
|
+
rest_reverse << line
|
267
|
+
end
|
256
268
|
end
|
269
|
+
rescue
|
257
270
|
end
|
271
|
+
([error || 'Puppet catalog compile error'] + rest_reverse.reverse).join("\n")
|
258
272
|
end
|
259
273
|
end
|
260
274
|
|
@@ -385,21 +399,60 @@ module MCollective
|
|
385
399
|
end
|
386
400
|
end
|
387
401
|
|
388
|
-
def
|
389
|
-
ret =
|
390
|
-
|
391
|
-
dyn_attrs
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
402
|
+
def has_dynamic_attributes?(cmps_with_attrs)
|
403
|
+
ret = cmps_with_attrs.map do |cmp_with_attrs|
|
404
|
+
dyn_attrs = cmp_with_attrs["dynamic_attributes"]||[]
|
405
|
+
if !dyn_attrs.empty?
|
406
|
+
{
|
407
|
+
:cmp_ref => component_ref(cmp_with_attrs),
|
408
|
+
:dynamic_attrs => dyn_attrs
|
409
|
+
}
|
410
|
+
end
|
411
|
+
end.compact
|
412
|
+
!ret.empty? && ret
|
413
|
+
end
|
414
|
+
|
415
|
+
def process_dynamic_attributes!(ret,dynamic_attr_info)
|
416
|
+
dyn_attr_assigns = Array.new
|
417
|
+
missing_dyn_attrs = Array.new
|
418
|
+
dynamic_attr_info.each do |info|
|
419
|
+
cmp_ref = info[:cmp_ref]
|
420
|
+
info[:dynamic_attrs].each do |dyn_attr|
|
421
|
+
if dyn_attr_assign = dynamic_attr_response_el(cmp_ref,dyn_attr)
|
422
|
+
dyn_attr_assigns << dyn_attr_assign
|
423
|
+
else
|
424
|
+
missing_attr = {
|
425
|
+
:cmp_ref => cmp_ref,
|
426
|
+
:attr => dyn_attr[:name]
|
427
|
+
}
|
428
|
+
missing_dyn_attrs << missing_attr
|
398
429
|
end
|
399
430
|
end
|
400
431
|
end
|
401
|
-
|
432
|
+
if missing_dyn_attrs.empty?
|
433
|
+
ret.set_dynamic_attributes!(dyn_attr_assigns)
|
434
|
+
ret.set_status_succeeded!()
|
435
|
+
else
|
436
|
+
set_error_missing_dynamic_attrs!(ret,missing_dyn_attrs)
|
437
|
+
ret.set_status_failed!()
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
441
|
+
def set_error_missing_dynamic_attrs!(ret,missing_dyn_attrs)
|
442
|
+
errors = missing_dyn_attrs.map do |info|
|
443
|
+
err_message = "Dynamic Attribute (#{info[:attr]}) is not set by component (#{info[:cmp_ref]})"
|
444
|
+
{
|
445
|
+
:message => err_message,
|
446
|
+
:type => "user_error"
|
447
|
+
}
|
448
|
+
end
|
449
|
+
error_info = {
|
450
|
+
:return_code => 1,
|
451
|
+
:errors => errors
|
452
|
+
}
|
453
|
+
ret.merge!(error_info)
|
402
454
|
end
|
455
|
+
|
403
456
|
def dynamic_attr_response_el(cmp_name,dyn_attr)
|
404
457
|
ret = nil
|
405
458
|
val =
|
@@ -520,9 +573,10 @@ module MCollective
|
|
520
573
|
cmp_with_attrs["name"]
|
521
574
|
when "definition"
|
522
575
|
defn = cmp_with_attrs["name"]
|
523
|
-
|
524
|
-
|
525
|
-
|
576
|
+
unless name_attr = cmp_with_attrs["attributes"].find{|attr|attr["name"] == "name"}
|
577
|
+
raise "Cannot find the name associated with definition #{defn}"
|
578
|
+
end
|
579
|
+
"#{cmp_with_attrs["name"]}[#{name_attr["value"]}]"
|
526
580
|
else
|
527
581
|
raise "Reference to type #{cmp_with_attrs["component_type"]} not treated"
|
528
582
|
end
|
@@ -661,7 +715,7 @@ module MCollective
|
|
661
715
|
Thread.current[:report_status] = status.to_sym
|
662
716
|
end
|
663
717
|
def self.get_status()
|
664
|
-
Thread.current[:report_status]
|
718
|
+
Thread.current[:report_status] || :failed
|
665
719
|
end
|
666
720
|
def self.set_report_info(report_info)
|
667
721
|
Thread.current[:report_info] = report_info
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dtk-node-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rich PELAVIN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puppet
|
@@ -211,12 +211,12 @@ require_paths:
|
|
211
211
|
- lib
|
212
212
|
required_ruby_version: !ruby/object:Gem::Requirement
|
213
213
|
requirements:
|
214
|
-
- - '>='
|
214
|
+
- - ! '>='
|
215
215
|
- !ruby/object:Gem::Version
|
216
216
|
version: '0'
|
217
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
218
|
requirements:
|
219
|
-
- - '>='
|
219
|
+
- - ! '>='
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: '0'
|
222
222
|
requirements: []
|