simp-beaker-helpers 1.5.5 → 1.5.6
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 +4 -4
- data/Gemfile +1 -0
- data/README.md +17 -4
- data/lib/simp/beaker_helpers.rb +46 -31
- data/spec/acceptance/set_hieradata_on_spec.rb +57 -0
- data/spec/acceptance/write_hieradata_to_spec.rb +47 -0
- metadata +14 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f3ff792835639c1d173825e4d7ad5a29e0340a3
|
4
|
+
data.tar.gz: 88c6466aa066ec0cb670de639329dad0f72c5870
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d302c7b7af35a327f39e1b8dc8e6958fa73a7afb918a12f4d4078b9b12ae1251da15cf62a6592626ea385c31d741cda1ed935e00e77c7353e1726b699fe1439
|
7
|
+
data.tar.gz: d3999f5dc684959e1a188a21c93d30583dc7f5a097b132187c229d1720cf6eca74231a4d1e25b9cbb7d12e4c8d5d6599cafc82659e2f2a0778cf9b0df7003c35
|
data/Gemfile
CHANGED
@@ -17,6 +17,7 @@ group :system_tests do
|
|
17
17
|
gem 'pry'
|
18
18
|
gem 'beaker'
|
19
19
|
gem 'beaker-rspec'
|
20
|
+
gem 'vagrant-wrapper'
|
20
21
|
# NOTE: Workaround because net-ssh 2.10 is busting beaker
|
21
22
|
# lib/ruby/1.9.1/socket.rb:251:in `tcp': wrong number of arguments (5 for 4) (ArgumentError)
|
22
23
|
gem 'net-ssh', '~> 2.9.0'
|
data/README.md
CHANGED
@@ -21,6 +21,7 @@ Methods to assist beaker acceptance tests for SIMP.
|
|
21
21
|
* [`pfact_on`](#pfact_on)
|
22
22
|
* [`pluginsync_on`](#pluginsync_on)
|
23
23
|
* Hiera
|
24
|
+
* [`write_hieradata_to`](#write_hieradata_to)
|
24
25
|
* [`set_hieradata_on`](#set_hieradata_on)
|
25
26
|
* [`clear_temp_hieradata`](#clear_temp_hieradata)
|
26
27
|
6. [Environment variables](#environment-variables)
|
@@ -232,18 +233,30 @@ Simulates a `pluginsync` (useful for deploying custom facts) on given SUTs.
|
|
232
233
|
|
233
234
|
`pluginsync_on( suts = hosts )`
|
234
235
|
|
236
|
+
#### `write_hieradata_to`
|
237
|
+
|
238
|
+
Writes a YAML file in the Hiera :datadir of a Beaker::Host.
|
239
|
+
|
240
|
+
**NOTE**: This is useless unless Hiera is configured to use the data file.
|
241
|
+
`Beaker::DSL::Helpers::Hiera#write_hiera_config_on` from [beaker-hiera](https://github.com/puppetlabs/beaker-hiera) may be used to configure Hiera.
|
242
|
+
|
243
|
+
`write_hieradata_to(host, hieradata, terminus = 'default')`
|
244
|
+
|
245
|
+
- **`host`** = _(Array,String,Symbol)_ One or more hosts to act upon
|
246
|
+
- **`hieradata`** = _(Hash)_ The full hiera data structure to write to the system
|
247
|
+
- **`terminus`** = _(String)_ The file basename minus the file extension in which to write the Hiera data
|
235
248
|
|
236
249
|
#### `set_hieradata_on`
|
237
250
|
|
238
|
-
|
251
|
+
Writes a YAML file in the Hiera :datdir of a Beaker::Host, then configures the host to use that file exclusively.
|
239
252
|
|
240
|
-
**NOTE**: This is authoritative; you cannot mix this with other
|
253
|
+
**NOTE**: This is authoritative; you cannot mix this with other Hiera data sources.
|
241
254
|
|
242
|
-
`set_hieradata_on(host, hieradata,
|
255
|
+
`set_hieradata_on(host, hieradata, terminus = 'default')`
|
243
256
|
|
244
257
|
- **`host`** = _(Array,String,Symbol)_ One or more hosts to act upon
|
245
258
|
- **`hieradata`** = _(Hash)_ The full hiera data structure to write to the system
|
246
|
-
- **`
|
259
|
+
- **`terminus`** = _(String)_ The file basename minus the file extension in which to write the Hiera data
|
247
260
|
|
248
261
|
#### `clear_temp_hieradata`
|
249
262
|
|
data/lib/simp/beaker_helpers.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Simp; end
|
2
2
|
|
3
3
|
module Simp::BeakerHelpers
|
4
|
-
VERSION = '1.5.
|
4
|
+
VERSION = '1.5.6'
|
5
5
|
|
6
6
|
# use the `puppet fact` face to look up facts on an SUT
|
7
7
|
def pfact_on(sut, fact_name)
|
@@ -289,6 +289,10 @@ DEFAULT_KERNEL_TITLE=`/sbin/grubby --info=\\\${DEFAULT_KERNEL_INFO} | grep -m1 t
|
|
289
289
|
def fix_errata_on( suts = hosts )
|
290
290
|
|
291
291
|
suts.each do |sut|
|
292
|
+
# We need to be able to flip between server and client without issue
|
293
|
+
on sut, 'puppet resource group puppet gid=52'
|
294
|
+
on sut, 'puppet resource user puppet comment="Puppet" gid="52" uid="52" home="/var/lib/puppet" managehome=true'
|
295
|
+
|
292
296
|
# SIMP uses structured facts, therefore stringify_facts must be disabled
|
293
297
|
unless ENV['BEAKER_stringify_facts'] == 'yes'
|
294
298
|
on sut, 'puppet config set stringify_facts false'
|
@@ -440,51 +444,62 @@ done
|
|
440
444
|
end
|
441
445
|
|
442
446
|
|
443
|
-
#
|
447
|
+
# Writes a YAML file in the Hiera :datadir of a Beaker::Host.
|
444
448
|
#
|
445
|
-
#
|
449
|
+
# @note This is useless unless Hiera is configured to use the data file.
|
450
|
+
# @see `Beaker::DSL::Helpers::Hiera#write_hiera_config_on`
|
446
451
|
#
|
447
|
-
# @param[
|
452
|
+
# @param sut [Array<Host>, String, Symbol] One or more hosts to act upon.
|
448
453
|
#
|
449
|
-
# @param
|
454
|
+
# @param heradata [Hash, String] The full hiera data structure to write to
|
455
|
+
# the system.
|
450
456
|
#
|
451
|
-
# @param[
|
452
|
-
#
|
457
|
+
# @param terminus [String] The basename of the YAML file minus the extension
|
458
|
+
# to write to the system.
|
453
459
|
#
|
454
|
-
# @
|
455
|
-
#
|
456
|
-
#
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
# Omit this call to be able to delve into the hiera data that is
|
463
|
-
# being created
|
464
|
-
@temp_hieradata_dirs = @temp_hieradata_dirs || []
|
465
|
-
|
460
|
+
# @return [Nil]
|
461
|
+
#
|
462
|
+
# @note This creates a tempdir on the host machine which should be removed
|
463
|
+
# using `#clear_temp_hieradata` in the `after(:all)` hook. It may also be
|
464
|
+
# retained for debugging purposes.
|
465
|
+
#
|
466
|
+
def write_hieradata_to(sut, hieradata, terminus = 'default')
|
467
|
+
@temp_hieradata_dirs ||= []
|
466
468
|
data_dir = Dir.mktmpdir('hieradata')
|
467
469
|
@temp_hieradata_dirs << data_dir
|
468
470
|
|
469
|
-
fh = File.open(File.join(data_dir,"#{
|
470
|
-
if hieradata.
|
471
|
+
fh = File.open(File.join(data_dir, "#{terminus}.yaml"), 'w')
|
472
|
+
if hieradata.is_a?(String)
|
471
473
|
fh.puts(hieradata)
|
472
474
|
else
|
473
475
|
fh.puts(hieradata.to_yaml)
|
474
476
|
end
|
475
|
-
|
476
477
|
fh.close
|
477
478
|
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
sut,
|
483
|
-
"file { '#{hiera_datadir(sut)}': ensure => 'absent', force => true, recurse => true }"
|
484
|
-
)
|
479
|
+
apply_manifest_on sut, "file { '#{hiera_datadir(sut)}': ensure => 'directory', force => true }"
|
480
|
+
copy_hiera_data_to sut, File.join(data_dir, "#{terminus}.yaml")
|
481
|
+
end
|
482
|
+
|
485
483
|
|
486
|
-
|
487
|
-
|
484
|
+
# Write the provided data structure to Hiera's :datadir and configure Hiera to
|
485
|
+
# use that data exclusively.
|
486
|
+
#
|
487
|
+
# @note This is authoritative. It manages both Hiera data and configuration,
|
488
|
+
# so it may not be used with other Hiera data sources.
|
489
|
+
#
|
490
|
+
# @param sut [Array<Host>, String, Symbol] One or more hosts to act upon.
|
491
|
+
#
|
492
|
+
# @param heradata [Hash, String] The full hiera data structure to write to
|
493
|
+
# the system.
|
494
|
+
#
|
495
|
+
# @param terminus [String] The basename of the YAML file minus the extension
|
496
|
+
# to write to the system.
|
497
|
+
#
|
498
|
+
# @return [Nil]
|
499
|
+
#
|
500
|
+
def set_hieradata_on(sut, hieradata, terminus = 'default')
|
501
|
+
write_hieradata_to sut, hieradata, terminus
|
502
|
+
write_hiera_config_on sut, Array(terminus)
|
488
503
|
end
|
489
504
|
|
490
505
|
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
hosts.each do |host|
|
4
|
+
describe '#set_hieradata_on' do
|
5
|
+
context 'when passed a YAML string' do
|
6
|
+
before(:all) { set_hieradata_on(host, "---\n") }
|
7
|
+
after(:all) { on(host, "rm -rf #{host.puppet['hiera_config']} #{hiera_datadir(host)}") }
|
8
|
+
|
9
|
+
it 'creates the datadir' do
|
10
|
+
on host, "test -d #{hiera_datadir(host)}"
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'writes to the configuration file' do
|
14
|
+
stdout = on(host, "cat #{host.puppet['hiera_config']}").stdout
|
15
|
+
expect(stdout).to match(":hierarchy:\n- default")
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'writes the correct contents to the correct file' do
|
19
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/default.yaml").stdout
|
20
|
+
expect(stdout).to eq("---\n")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when passed a hash' do
|
25
|
+
before(:all) { set_hieradata_on(host, { 'foo' => 'bar' }) }
|
26
|
+
after(:all) { on(host, "rm -rf #{host.puppet['hiera_config']} #{hiera_datadir(host)}") }
|
27
|
+
|
28
|
+
it 'creates the datadir' do
|
29
|
+
on host, "test -d #{hiera_datadir(host)}"
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'writes the correct contents to the correct file' do
|
33
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/default.yaml").stdout
|
34
|
+
expect(stdout).to eq("---\nfoo: bar\n")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when the terminus is set' do
|
39
|
+
before(:all) { set_hieradata_on(host, "---\n", 'not-default') }
|
40
|
+
after(:all) { on(host, "rm -rf #{host.puppet['hiera_config']} #{hiera_datadir(host)}") }
|
41
|
+
|
42
|
+
it 'creates the datadir' do
|
43
|
+
on host, "test -d #{hiera_datadir(host)}"
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'writes the correct hierarchy to the configuration file' do
|
47
|
+
stdout = on(host, "cat #{host.puppet['hiera_config']}").stdout
|
48
|
+
expect(stdout).to match(":hierarchy:\n- not-default")
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'writes the correct contents to the correct file' do
|
52
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/not-default.yaml").stdout
|
53
|
+
expect(stdout).to eq("---\n")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper_acceptance'
|
2
|
+
|
3
|
+
hosts.each do |host|
|
4
|
+
describe '#write_hieradata_to' do
|
5
|
+
context 'when passed a YAML string' do
|
6
|
+
before(:all) { set_hieradata_on(host, "---\n") }
|
7
|
+
after(:all) { on(host, "rm -rf #{hiera_datadir(host)}") }
|
8
|
+
|
9
|
+
it 'creates the datadir' do
|
10
|
+
on host, "test -d #{hiera_datadir(host)}"
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'writes the correct contents to the correct file' do
|
14
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/default.yaml").stdout
|
15
|
+
expect(stdout).to eq("---\n")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when passed a hash' do
|
20
|
+
before(:all) { set_hieradata_on(host, { 'foo' => 'bar' }) }
|
21
|
+
after(:all) { on(host, "rm -rf #{hiera_datadir(host)}") }
|
22
|
+
|
23
|
+
it 'creates the datadir' do
|
24
|
+
on host, "test -d #{hiera_datadir(host)}"
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'writes the correct contents to the correct file' do
|
28
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/default.yaml").stdout
|
29
|
+
expect(stdout).to eq("---\nfoo: bar\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when the terminus is set' do
|
34
|
+
before(:all) { set_hieradata_on(host, "---\n", 'not-default') }
|
35
|
+
after(:all) { on(host, "rm -rf #{hiera_datadir(host)}") }
|
36
|
+
|
37
|
+
it 'creates the datadir' do
|
38
|
+
on host, "test -d #{hiera_datadir(host)}"
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'writes the correct contents to the correct file' do
|
42
|
+
stdout = on(host, "cat #{hiera_datadir(host)}/not-default.yaml").stdout
|
43
|
+
expect(stdout).to eq("---\n")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simp-beaker-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Tessmer
|
@@ -9,20 +9,20 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-09-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: beaker
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ~>
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '2'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '2'
|
28
28
|
description: |2
|
@@ -32,10 +32,10 @@ executables: []
|
|
32
32
|
extensions: []
|
33
33
|
extra_rdoc_files: []
|
34
34
|
files:
|
35
|
-
-
|
36
|
-
-
|
37
|
-
-
|
38
|
-
-
|
35
|
+
- .fixtures.yml
|
36
|
+
- .gitignore
|
37
|
+
- .rspec
|
38
|
+
- .travis.yml
|
39
39
|
- Gemfile
|
40
40
|
- LICENSE
|
41
41
|
- README.md
|
@@ -53,6 +53,8 @@ files:
|
|
53
53
|
- spec/acceptance/nodesets/centos-combined-x64.yaml
|
54
54
|
- spec/acceptance/nodesets/default.yml
|
55
55
|
- spec/acceptance/pki_tests_spec.rb
|
56
|
+
- spec/acceptance/set_hieradata_on_spec.rb
|
57
|
+
- spec/acceptance/write_hieradata_to_spec.rb
|
56
58
|
- spec/spec_helper_acceptance.rb
|
57
59
|
homepage: https://github.com/simp/rubygem-simp-beaker-helpers
|
58
60
|
licenses:
|
@@ -65,12 +67,12 @@ require_paths:
|
|
65
67
|
- lib
|
66
68
|
required_ruby_version: !ruby/object:Gem::Requirement
|
67
69
|
requirements:
|
68
|
-
- -
|
70
|
+
- - '>='
|
69
71
|
- !ruby/object:Gem::Version
|
70
72
|
version: '0'
|
71
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
74
|
requirements:
|
73
|
-
- -
|
75
|
+
- - '>='
|
74
76
|
- !ruby/object:Gem::Version
|
75
77
|
version: '0'
|
76
78
|
requirements: []
|
@@ -86,4 +88,6 @@ test_files:
|
|
86
88
|
- spec/acceptance/nodesets/centos-combined-x64.yaml
|
87
89
|
- spec/acceptance/nodesets/default.yml
|
88
90
|
- spec/acceptance/pki_tests_spec.rb
|
91
|
+
- spec/acceptance/set_hieradata_on_spec.rb
|
92
|
+
- spec/acceptance/write_hieradata_to_spec.rb
|
89
93
|
- spec/spec_helper_acceptance.rb
|