kitchen-salt 0.0.17 → 0.0.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/kitchen-salt/version.rb +1 -1
- data/lib/kitchen/provisioner/salt_solo.rb +57 -19
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YmZkODE1Yjg1ZDI3NGE3ZDRmOTRmMzdjM2E1NzdlODc4ZTlhNjA2MA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDI5ZTVjMjg4ZGQxZmUwMDRjOGYyZTljNTdmZDY0MTQzOGI2NzA1OQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODgxZDY3NjY1ODMyM2E4OGRlMTBjMmMyNjMxNDVjOGI2ODI4NmM1NzllMGYw
|
10
|
+
NmM0ZjA2ZTAxOWFlZTU3YWNlZTg3ZTU3M2JkYTAwOGUzZjBhNGFiZDgyYzY5
|
11
|
+
OTg5M2E4Mjg5YjRkYmFiOGIwMDYxZjc1NjYxNzFiMmVjZmI5MzY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzMzMmExODUzMDkzYzdhYzNjNzJmOGZkMTViZGI2NzVkOGE5NTA5ZWI2MDVm
|
14
|
+
Y2ZjM2FkMzc1ZGE3YjU1YzExMzllMGEwMTgzNDU0YTNiYjNkN2FhNjFhYjM1
|
15
|
+
NjMxYjUzNmNlMGY2ZmIyNTEwODNhMmNjZjM0YjJkYWJhYTcwNWM=
|
data/lib/kitchen-salt/version.rb
CHANGED
@@ -17,6 +17,8 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
|
19
19
|
require 'kitchen/provisioner/base'
|
20
|
+
require 'find'
|
21
|
+
require 'fileutils'
|
20
22
|
require 'yaml'
|
21
23
|
|
22
24
|
module Kitchen
|
@@ -51,6 +53,9 @@ module Kitchen
|
|
51
53
|
default_config :state_top, {}
|
52
54
|
default_config :state_top_from_file, false
|
53
55
|
default_config :salt_run_highstate, true
|
56
|
+
default_config :salt_copy_filter, []
|
57
|
+
default_config :is_file_root, false
|
58
|
+
|
54
59
|
|
55
60
|
# salt-call version that supports the undocumented --retcode-passthrough command
|
56
61
|
RETCODE_VERSION = '0.17.5'
|
@@ -146,7 +151,7 @@ module Kitchen
|
|
146
151
|
prepare_state_top
|
147
152
|
prepare_pillars
|
148
153
|
prepare_grains
|
149
|
-
if config[:state_collection]
|
154
|
+
if config[:state_collection] || config[:is_file_root]
|
150
155
|
prepare_state_collection
|
151
156
|
else
|
152
157
|
prepare_formula
|
@@ -179,8 +184,7 @@ module Kitchen
|
|
179
184
|
end
|
180
185
|
|
181
186
|
# scan the output for signs of failure, there is a risk of false negatives
|
182
|
-
fail_grep = 'grep -e Result.*False -e Data.failed.to.compile'
|
183
|
-
fail_grep = 'grep -e Result.*False'
|
187
|
+
fail_grep = 'grep -e Result.*False -e Data.failed.to.compile -e No.matching.sls.found.for'
|
184
188
|
# capture any non-zero exit codes from the salt-call | tee pipe
|
185
189
|
cmd = 'set -o pipefail ; ' << cmd
|
186
190
|
# Capture the salt-call output & exit code
|
@@ -203,7 +207,8 @@ module Kitchen
|
|
203
207
|
|
204
208
|
tmpdata_dir = File.join(sandbox_path, "data")
|
205
209
|
FileUtils.mkdir_p(tmpdata_dir)
|
206
|
-
FileUtils.cp_r(Dir.glob("#{config[:data_path]}/*"), tmpdata_dir)
|
210
|
+
#FileUtils.cp_r(Dir.glob("#{config[:data_path]}/*"), tmpdata_dir)
|
211
|
+
cp_r_with_filter(config[:data_path], tmpdata_dir, config[:salt_copy_filter])
|
207
212
|
end
|
208
213
|
|
209
214
|
def prepare_minion
|
@@ -270,17 +275,9 @@ module Kitchen
|
|
270
275
|
info("Preparing pillars into #{config[:salt_pillar_root]}")
|
271
276
|
debug("Pillars Hash: #{config[:pillars]}")
|
272
277
|
|
273
|
-
|
274
|
-
|
275
|
-
external_pillars = unsymbolize(config[:'pillars-from-files'])
|
276
|
-
debug("external_pillars (unsymbolize): #{external_pillars}")
|
277
|
-
external_pillars.each do |key, value|
|
278
|
-
debug("loading externalpillar: #{key}, #{value}")
|
279
|
-
config[:pillars][key] = YAML.load(File.read(value))
|
280
|
-
end
|
281
|
-
end
|
278
|
+
return if config[:pillars].nil? && config[:'pillars-from-files'].nil?
|
279
|
+
|
282
280
|
|
283
|
-
return if config[:pillars].nil?
|
284
281
|
|
285
282
|
# we get a hash with all the keys converted to symbols, salt doesn't like this
|
286
283
|
# to convert all the keys back to strings again
|
@@ -308,6 +305,22 @@ module Kitchen
|
|
308
305
|
file.write(pillar)
|
309
306
|
end
|
310
307
|
end
|
308
|
+
|
309
|
+
# copy the pillars from files straight across, as YAML.load/to_yaml and
|
310
|
+
# munge multiline strings
|
311
|
+
if !config[:'pillars-from-files'].nil?
|
312
|
+
external_pillars = unsymbolize(config[:'pillars-from-files'])
|
313
|
+
debug("external_pillars (unsymbolize): #{external_pillars}")
|
314
|
+
external_pillars.each do |key, srcfile|
|
315
|
+
debug("Copying external pillar: #{key}, #{srcfile}")
|
316
|
+
# generate the filename
|
317
|
+
sandbox_pillar_path = File.join(sandbox_path, config[:salt_pillar_root], key)
|
318
|
+
# create the directory where the pillar file will go
|
319
|
+
FileUtils.mkdir_p(File.dirname(sandbox_pillar_path))
|
320
|
+
# copy the file across
|
321
|
+
FileUtils.copy srcfile, sandbox_pillar_path
|
322
|
+
end
|
323
|
+
end
|
311
324
|
end
|
312
325
|
|
313
326
|
def prepare_grains
|
@@ -341,7 +354,8 @@ module Kitchen
|
|
341
354
|
|
342
355
|
formula_dir = File.join(sandbox_path, config[:salt_file_root], config[:formula])
|
343
356
|
FileUtils.mkdir_p(formula_dir)
|
344
|
-
FileUtils.cp_r(Dir.glob(File.join(config[:kitchen_root], config[:formula], "*")), formula_dir)
|
357
|
+
#FileUtils.cp_r(Dir.glob(File.join(config[:kitchen_root], config[:formula], "*")), formula_dir)
|
358
|
+
cp_r_with_filter(File.join(config[:kitchen_root], config[:formula]), formula_dir, config[:salt_copy_filter])
|
345
359
|
|
346
360
|
# copy across the _modules etc directories for python implementation
|
347
361
|
['_modules', '_states', '_grains', '_renderers', '_returners'].each do |extrapath|
|
@@ -351,7 +365,8 @@ module Kitchen
|
|
351
365
|
debug("prepare_formula: #{src} exists, copying..")
|
352
366
|
extrapath_dir = File.join(sandbox_path, config[:salt_file_root], extrapath)
|
353
367
|
FileUtils.mkdir_p(extrapath_dir)
|
354
|
-
FileUtils.cp_r(Dir.glob(File.join(src, "*")), extrapath_dir)
|
368
|
+
#FileUtils.cp_r(Dir.glob(File.join(src, "*")), extrapath_dir)
|
369
|
+
cp_r_with_filter(src, extrapath_dir, config[:salt_copy_filter])
|
355
370
|
else
|
356
371
|
debug("prepare_formula: #{src} doesn't exist, skipping.")
|
357
372
|
end
|
@@ -363,8 +378,8 @@ module Kitchen
|
|
363
378
|
debug("Using config #{config}")
|
364
379
|
|
365
380
|
if config[:collection_name].nil? and config[:formula].nil?
|
366
|
-
|
367
|
-
|
381
|
+
info("neither collection_name or formula have been set, assuming this is a pre-built collection")
|
382
|
+
config[:collection_name] = ""
|
368
383
|
else
|
369
384
|
if config[:collection_name].nil?
|
370
385
|
debug("collection_name not set, using #{config[:formula]}")
|
@@ -377,9 +392,32 @@ module Kitchen
|
|
377
392
|
debug("collection_name = #{config[:collection_name]}")
|
378
393
|
collection_dir = File.join(sandbox_path, config[:salt_file_root], config[:collection_name])
|
379
394
|
FileUtils.mkdir_p(collection_dir)
|
380
|
-
|
395
|
+
cp_r_with_filter(config[:kitchen_root], collection_dir, config[:salt_copy_filter])
|
381
396
|
|
382
397
|
end
|
398
|
+
|
399
|
+
def cp_r_with_filter(source_path, target_path, filter=[])
|
400
|
+
debug("cp_r_with_filter:source_path = #{source_path}")
|
401
|
+
debug("cp_r_with_filter:target_path = #{target_path}")
|
402
|
+
debug("cp_r_with_filter:filter = #{filter}")
|
403
|
+
|
404
|
+
Array(source_path).each do |source_path|
|
405
|
+
Find.find(source_path) do |source|
|
406
|
+
target = source.sub(/^#{source_path}/, target_path)
|
407
|
+
debug("cp_r_with_filter:source = #{source}")
|
408
|
+
debug("cp_r_with_filter:target = #{target}")
|
409
|
+
if File.directory? source
|
410
|
+
if filter.include?(File.basename(source))
|
411
|
+
debug("Found #{source} in #{filter}, pruning it from the Find")
|
412
|
+
Find.prune
|
413
|
+
end
|
414
|
+
FileUtils.mkdir target unless File.exists? target
|
415
|
+
else
|
416
|
+
FileUtils.copy source, target
|
417
|
+
end
|
418
|
+
end
|
419
|
+
end
|
420
|
+
end
|
383
421
|
end
|
384
422
|
end
|
385
423
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-salt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon McCartney
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: salt provisioner for test-kitchen
|
14
14
|
email:
|