dtk-node-agent 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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.