dtk-node-agent 0.6.0 → 0.6.1

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
- SHA1:
3
- metadata.gz: 9deb49e5523865f975ea6d80b996de3db3262e81
4
- data.tar.gz: 684d5df7570054a2542cc8587dfc17a55cc77ba6
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MDA2NGNlZDk5MmRkNDA0MDAxNGE2NDA0ZWQ3OGU2YTNjZjk1MTM1NA==
5
+ data.tar.gz: !binary |-
6
+ ZmEzMGY2M2MxZWEzNmJmNjVhMGFhMDM0NTkyMjIxNjhlMThlYTQ1ZA==
5
7
  SHA512:
6
- metadata.gz: 900dbd83fb0df8e84f5d3f4838145c3022fdeb5458b9397a4acd782661bbb48be00c72e94039c31587dc641df3d92bf2a2ff5fb72a75859c24cb779cc15dcc07
7
- data.tar.gz: 51d3386fb5289ddfebb287d69b660b5fb003b4f1199128dd9c61b56298301b4cc8ce2b70f3d804ab4e91bf6ebf53f60854de659a960356d9145a65f2f4de1135
8
+ metadata.gz: !binary |-
9
+ OWMyYThiN2Q1NzMzN2YxMzI0YzAwNGJjZTA1MDExYmIxOGU3OTA1YTliYjZj
10
+ ZjUzMWQzMDQ5NTA0MGE2MzYzZmEyNTk5ZmRiNzg0YmM0MTBkNTFkNDQxNzUy
11
+ YTZkYzZlMjhhZThkODE2OTQwZDBjYzQyMDUzOGNkMzljZTc3Zjc=
12
+ data.tar.gz: !binary |-
13
+ OTJlZjM2OWY5ZjNhNzIyODMwMTdlMmIwMjgzODBiMjJkNGNlODFkM2RmNzFj
14
+ M2IxMzFiYmQ1ZmJhODgwZDVhMWVmZDBlOWUwMDdmOTRhMWE2MjliZDRhZjk4
15
+ NzhkMDAyNDVkYTNkYjRjNzAyOWZkNDhlYThjMDYyYjZiYWVhMDk=
@@ -45,7 +45,6 @@ module DTK
45
45
  shell "rpm -ivh #{CONFIG[:puppetlabs_el5_rpm_repo]}"
46
46
  Facter.architecture == 'X86_64' ? (shell "rpm -ivh #{CONFIG[:rpm_forge_el5_X86_64_repo]}") : (shell "rpm -ivh #{CONFIG[:rpm_forge_el5_i686_repo]}")
47
47
  when "6", "n/a"
48
- next unless Facter.operatingsystem == "Amazon"
49
48
  shell "rpm -ivh #{CONFIG[:puppetlabs_el6_rpm_repo]}"
50
49
  Facter.architecture == 'X86_64' ? (shell "rpm -ivh #{CONFIG[:rpm_forge_el6_X86_64_repo]}") : (shell "rpm -ivh #{CONFIG[:rpm_forge_el6_i686_repo]}")
51
50
  shell "yum-config-manager --disable rpmforge-release"
@@ -154,4 +153,4 @@ module DTK
154
153
 
155
154
  end
156
155
  end
157
- end
156
+ end
@@ -1,3 +1,3 @@
1
1
  module DtkNodeAgent
2
- VERSION="0.6.0"
2
+ VERSION="0.6.1"
3
3
  end
@@ -7,8 +7,9 @@ require 'fileutils'
7
7
  require File.expand_path('dtk_node_agent_git_client',File.dirname(__FILE__))
8
8
 
9
9
  #TODO: move to be shared by agents
10
- PuppetApplyLogDir = "/var/log/puppet"
11
- ModulePath = "/etc/puppet/modules"
10
+ PuppetApplyLogDir = "/var/log/puppet"
11
+ ModulePath = "/etc/puppet/modules"
12
+ DTKPuppetCacheBaseDir = "/usr/share/dtk/tasks"
12
13
 
13
14
  module MCollective
14
15
  module Agent
@@ -29,6 +30,7 @@ module MCollective
29
30
  log_params()
30
31
  @reply_data = nil
31
32
  @msg_id = request.uniqid
33
+ @service_name = request[:service_name] || "UNKNOWN"
32
34
  @task_info = [:task_id,:top_task_id].inject({}) do |h,k|
33
35
  h.merge(k => request[k])
34
36
  end.merge(:msg_id => @msg_id)
@@ -135,10 +137,11 @@ module MCollective
135
137
  # Amar: Added task ID to current thread, so puppet apply can be canceled from puppet_cancel.rb when user requests cancel
136
138
  task_id = request[:top_task_id]
137
139
  Thread.current[:task_id] = task_id
138
-
139
140
  clean_state()
140
141
  ret = nil
141
- log_file_path = log_file_path()
142
+ # TODO: harmonize request[:top_task_id] and top_task_id()
143
+ dtk_puppet_cache = DTKPuppetCache.new(@service_name,top_task_id())
144
+ log_file_path = dtk_puppet_cache.log_file_path(inter_node_stage)
142
145
  log_file = nil
143
146
  begin
144
147
  save_stderr = nil
@@ -146,9 +149,8 @@ module MCollective
146
149
  log_file = File.open(log_file_path,"a")
147
150
  log_file.close
148
151
  Puppet[:autoflush] = true
149
- most_recent_link = most_recent_file_path()
150
- File.delete(most_recent_link) if File.exists? most_recent_link
151
- File.symlink(log_file_path,most_recent_link)
152
+ most_recent_link = puppet_last_log_link()
153
+ ln_s(log_file_path,most_recent_link)
152
154
 
153
155
  # Amar: Node manifest contains list of generated puppet manifests
154
156
  # This is done to support multiple puppet calls inside one puppet_apply agent call
@@ -156,7 +158,13 @@ module MCollective
156
158
  execute_lines = puppet_manifest || ret_execute_lines(cmps_with_attrs)
157
159
  execute_string = execute_lines.join("\n")
158
160
  @log.info("\n----------------execute_string------------\n#{execute_string}\n----------------execute_string------------")
159
- File.open("/tmp/site_stage#{inter_node_stage}_puppet_invocation_#{i+1}.pp","w"){|f| f << execute_string}
161
+ task_dir = dtk_puppet_cache.task_dir()
162
+ # set the link to last_task
163
+ ln_s(task_dir, dtk_puppet_cache.last_task_link())
164
+
165
+ manifest_path = dtk_puppet_cache.node_manifest_path(inter_node_stage,i+1)
166
+ File.open(manifest_path,"w"){|f| f << execute_string}
167
+
160
168
  cmd_line =
161
169
  [
162
170
  "apply",
@@ -553,11 +561,8 @@ module MCollective
553
561
  def log_params()
554
562
  @log.info("params: #{request.data.inspect}")
555
563
  end
556
-
557
- def log_file_path()
558
- "#{PuppetApplyLogDir}/#{id_info()}.log"
559
- end
560
- def most_recent_file_path()
564
+
565
+ def puppet_last_log_link()
561
566
  "#{PuppetApplyLogDir}/last.log"
562
567
  end
563
568
  def id_info()
@@ -567,6 +572,47 @@ module MCollective
567
572
  end
568
573
  end.compact.join(":")
569
574
  end
575
+ def top_task_id()
576
+ "task_id_#{@task_info[:top_task_id] || @task_info[:task_id] || 'task' }"
577
+ end
578
+
579
+ def ln_s(target,link)
580
+ File.delete(link) if File.exists? link
581
+ FileUtils.ln_s(target,link,:force => true)
582
+ end
583
+
584
+ class DTKPuppetCache
585
+ BaseDir = DTKPuppetCacheBaseDir
586
+ def initialize(service_name,top_task_id)
587
+ @service_name = service_name
588
+ @top_task_id = top_task_id
589
+ end
590
+
591
+ def task_dir()
592
+ @task_dir ||= mkdir_p("#{base_dir()}/#{@service_name}/#{@top_task_id}")
593
+ end
594
+
595
+ def log_file_path(stage)
596
+ "#{task_dir()}/stage-#{stage}-puppet.log"
597
+ end
598
+ def node_manifest_path(stage,invocation)
599
+ "#{task_dir()}/site-stage-#{stage}-invocation-#{invocation}.pp"
600
+ end
601
+
602
+ def last_task_link()
603
+ "#{base_dir()}/last-task"
604
+ end
605
+
606
+ private
607
+ def base_dir()
608
+ @base_dir ||= mkdir_p(BaseDir)
609
+ end
610
+
611
+ def mkdir_p(dir_path)
612
+ FileUtils.mkdir_p(dir_path)
613
+ dir_path
614
+ end
615
+ end
570
616
 
571
617
  #TODO: this should be common accross Agents
572
618
  class Response < Hash
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dtk-node-agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
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-10-04 00:00:00.000000000 Z
11
+ date: 2014-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.3.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.3.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: facter
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.7.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.7.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: grit
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: 2.5.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: 2.5.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: stomp
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: 1.3.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.3.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sshkeyauth
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.0.11
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.0.11
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: serverspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.1.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.1.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: specinfra
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
103
  version: 1.0.4
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: 1.0.4
111
111
  - !ruby/object:Gem::Dependency
@@ -209,17 +209,17 @@ require_paths:
209
209
  - lib
210
210
  required_ruby_version: !ruby/object:Gem::Requirement
211
211
  requirements:
212
- - - ">="
212
+ - - ! '>='
213
213
  - !ruby/object:Gem::Version
214
214
  version: '0'
215
215
  required_rubygems_version: !ruby/object:Gem::Requirement
216
216
  requirements:
217
- - - ">="
217
+ - - ! '>='
218
218
  - !ruby/object:Gem::Version
219
219
  version: '0'
220
220
  requirements: []
221
221
  rubyforge_project:
222
- rubygems_version: 2.4.1
222
+ rubygems_version: 2.2.2
223
223
  signing_key:
224
224
  specification_version: 4
225
225
  summary: DTK Node Agent gem.