r10k 3.9.3 → 3.10.0

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec_tests.yml +1 -1
  3. data/CHANGELOG.mkd +9 -0
  4. data/doc/dynamic-environments/configuration.mkd +7 -0
  5. data/integration/Rakefile +1 -1
  6. data/integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb +3 -9
  7. data/integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb +8 -14
  8. data/lib/r10k/action/deploy/environment.rb +3 -0
  9. data/lib/r10k/action/runner.rb +11 -6
  10. data/lib/r10k/git/cache.rb +1 -1
  11. data/lib/r10k/initializers.rb +7 -0
  12. data/lib/r10k/module/forge.rb +5 -1
  13. data/lib/r10k/module_loader/puppetfile.rb +195 -0
  14. data/lib/r10k/module_loader/puppetfile/dsl.rb +37 -0
  15. data/lib/r10k/puppetfile.rb +77 -153
  16. data/lib/r10k/settings.rb +3 -0
  17. data/lib/r10k/source/base.rb +10 -0
  18. data/lib/r10k/source/git.rb +5 -0
  19. data/lib/r10k/source/svn.rb +4 -0
  20. data/lib/r10k/util/purgeable.rb +70 -8
  21. data/lib/r10k/version.rb +1 -1
  22. data/locales/r10k.pot +37 -33
  23. data/spec/fixtures/unit/action/r10k_forge_auth.yaml +4 -0
  24. data/spec/fixtures/unit/action/r10k_forge_auth_no_url.yaml +3 -0
  25. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_subdir_2/ignored_1 +0 -0
  26. data/spec/fixtures/unit/util/purgeable/managed_two/.hidden/unmanaged_3 +0 -0
  27. data/spec/unit/action/deploy/environment_spec.rb +9 -0
  28. data/spec/unit/action/deploy/module_spec.rb +38 -14
  29. data/spec/unit/action/runner_spec.rb +49 -25
  30. data/spec/unit/git/cache_spec.rb +14 -0
  31. data/spec/unit/module/forge_spec.rb +8 -1
  32. data/spec/unit/module_loader/puppetfile_spec.rb +330 -0
  33. data/spec/unit/puppetfile_spec.rb +99 -193
  34. data/spec/unit/settings_spec.rb +6 -2
  35. data/spec/unit/util/purgeable_spec.rb +38 -6
  36. metadata +10 -3
@@ -250,8 +250,12 @@ describe R10K::Settings do
250
250
 
251
251
  describe "forge settings" do
252
252
  it "passes settings through to the forge settings" do
253
- output = subject.evaluate("forge" => {"baseurl" => "https://forge.tessier-ashpool.freeside", "proxy" => "https://proxy.tessier-ashpool.freesize:3128"})
254
- expect(output[:forge]).to eq(:baseurl => "https://forge.tessier-ashpool.freeside", :proxy => "https://proxy.tessier-ashpool.freesize:3128")
253
+ output = subject.evaluate("forge" => {"baseurl" => "https://forge.tessier-ashpool.freeside",
254
+ "proxy" => "https://proxy.tessier-ashpool.freesize:3128",
255
+ "authorization_token" => "faketoken"})
256
+ expect(output[:forge]).to eq(:baseurl => "https://forge.tessier-ashpool.freeside",
257
+ :proxy => "https://proxy.tessier-ashpool.freesize:3128",
258
+ :authorization_token => "faketoken")
255
259
  end
256
260
  end
257
261
  end
@@ -19,6 +19,7 @@ RSpec.describe R10K::Util::Purgeable do
19
19
  'spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_new_1',
20
20
  'spec/fixtures/unit/util/purgeable/managed_two/expected_2',
21
21
  'spec/fixtures/unit/util/purgeable/managed_two/new_2',
22
+ 'spec/fixtures/unit/util/purgeable/managed_two/.hidden',
22
23
  ]
23
24
  end
24
25
 
@@ -98,7 +99,13 @@ RSpec.describe R10K::Util::Purgeable do
98
99
 
99
100
  describe '#current_contents' do
100
101
  it 'collects contents of all managed directories recursively' do
101
- expect(subject.current_contents(recurse)).to contain_exactly(/\/expected_1/, /\/expected_2/, /\/unmanaged_1/, /\/unmanaged_2/, /\/managed_subdir_1/, /\/subdir_expected_1/, /\/subdir_unmanaged_1/)
102
+ expect(subject.current_contents(recurse)).
103
+ to contain_exactly(/\/expected_1/, /\/expected_2/,
104
+ /\/unmanaged_1/, /\/unmanaged_2/,
105
+ /\/managed_subdir_1/,
106
+ /\/subdir_expected_1/, /\/subdir_unmanaged_1/,
107
+ /\/managed_subdir_2/, /\/ignored_1/,
108
+ /\/\.hidden/)
102
109
  end
103
110
  end
104
111
 
@@ -114,7 +121,8 @@ RSpec.describe R10K::Util::Purgeable do
114
121
  let(:whitelist) { [] }
115
122
 
116
123
  it 'collects current_contents that should not exist recursively' do
117
- expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_1/, /\/unmanaged_2/, /\/subdir_unmanaged_1/)
124
+ expect(subject.stale_contents(recurse, exclusions, whitelist)).
125
+ to contain_exactly(/\/unmanaged_1/, /\/unmanaged_2/, /\/subdir_unmanaged_1/, /\/ignored_1/)
118
126
  end
119
127
  end
120
128
 
@@ -124,7 +132,17 @@ RSpec.describe R10K::Util::Purgeable do
124
132
 
125
133
  it 'collects current_contents that should not exist except whitelisted items' do
126
134
  expect(subject.logger).to receive(:debug).with(/unmanaged_1.*whitelist match/i)
127
- expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_2/, /\/subdir_unmanaged_1/)
135
+
136
+ expect(subject.stale_contents(recurse, exclusions, whitelist)).
137
+ to contain_exactly(/\/unmanaged_2/, /\/subdir_unmanaged_1/, /\/ignored_1/)
138
+ end
139
+
140
+ it 'does not collect contents that match recursive globbed whitelist items as intermediate values' do
141
+ recursive_whitelist = ['**/managed_subdir_1/**/*']
142
+ expect(subject.logger).not_to receive(:debug).with(/ignored_1/)
143
+
144
+ expect(subject.stale_contents(recurse, exclusions, recursive_whitelist)).
145
+ to contain_exactly(/\/unmanaged_2/, /\/managed_one\/unmanaged_1/)
128
146
  end
129
147
  end
130
148
 
@@ -134,7 +152,17 @@ RSpec.describe R10K::Util::Purgeable do
134
152
 
135
153
  it 'collects current_contents that should not exist except excluded items' do
136
154
  expect(subject.logger).to receive(:debug2).with(/unmanaged_2.*internal exclusion match/i)
137
- expect(subject.stale_contents(recurse, exclusions, whitelist)).to contain_exactly(/\/unmanaged_1/, /\/subdir_unmanaged_1/)
155
+
156
+ expect(subject.stale_contents(recurse, exclusions, whitelist)).
157
+ to contain_exactly(/\/unmanaged_1/, /\/subdir_unmanaged_1/, /\/ignored_1/)
158
+ end
159
+
160
+ it 'does not collect contents that match recursive globbed exclusion items as intermediate values' do
161
+ recursive_exclusions = ['**/managed_subdir_1/**/*']
162
+ expect(subject.logger).not_to receive(:debug).with(/ignored_1/)
163
+
164
+ expect(subject.stale_contents(recurse, recursive_exclusions, whitelist)).
165
+ to contain_exactly(/\/unmanaged_2/, /\/managed_one\/unmanaged_1/)
138
166
  end
139
167
  end
140
168
  end
@@ -179,7 +207,11 @@ RSpec.describe R10K::Util::Purgeable do
179
207
  end
180
208
 
181
209
  context "recursive whitelist glob" do
182
- let(:whitelist) { managed_directories.collect { |dir| File.join(dir, "**", "*unmanaged*") } }
210
+ let(:whitelist) do
211
+ managed_directories.flat_map do |dir|
212
+ [File.join(dir, "**", "*unmanaged*"), File.join(dir, "**", "managed_subdir_2")]
213
+ end
214
+ end
183
215
  let(:purge_opts) { { recurse: true, whitelist: whitelist } }
184
216
 
185
217
  describe '#purge!' do
@@ -214,7 +246,7 @@ RSpec.describe R10K::Util::Purgeable do
214
246
  context "when class does not implement #purge_exclusions" do
215
247
  describe '#purge!' do
216
248
  it 'purges normally' do
217
- expect(FileUtils).to receive(:rm_r).at_least(3).times
249
+ expect(FileUtils).to receive(:rm_r).at_least(4).times
218
250
 
219
251
  subject.purge!(purge_opts)
220
252
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r10k
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.3
4
+ version: 3.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrien Thebo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-25 00:00:00.000000000 Z
11
+ date: 2021-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2
@@ -393,6 +393,8 @@ files:
393
393
  - lib/r10k/module/local.rb
394
394
  - lib/r10k/module/metadata_file.rb
395
395
  - lib/r10k/module/svn.rb
396
+ - lib/r10k/module_loader/puppetfile.rb
397
+ - lib/r10k/module_loader/puppetfile/dsl.rb
396
398
  - lib/r10k/puppetfile.rb
397
399
  - lib/r10k/settings.rb
398
400
  - lib/r10k/settings/collection.rb
@@ -446,6 +448,8 @@ files:
446
448
  - spec/fixtures/unit/action/r10k.yaml
447
449
  - spec/fixtures/unit/action/r10k_cachedir.yaml
448
450
  - spec/fixtures/unit/action/r10k_creds.yaml
451
+ - spec/fixtures/unit/action/r10k_forge_auth.yaml
452
+ - spec/fixtures/unit/action/r10k_forge_auth_no_url.yaml
449
453
  - spec/fixtures/unit/action/r10k_generate_types.yaml
450
454
  - spec/fixtures/unit/action/r10k_puppet_path.yaml
451
455
  - spec/fixtures/unit/puppetfile/argument-error/Puppetfile
@@ -457,9 +461,11 @@ files:
457
461
  - spec/fixtures/unit/puppetfile/valid-forge-with-version/Puppetfile
458
462
  - spec/fixtures/unit/puppetfile/valid-forge-without-version/Puppetfile
459
463
  - spec/fixtures/unit/util/purgeable/managed_one/expected_1
464
+ - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_subdir_2/ignored_1
460
465
  - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1
461
466
  - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_unmanaged_1
462
467
  - spec/fixtures/unit/util/purgeable/managed_one/unmanaged_1
468
+ - spec/fixtures/unit/util/purgeable/managed_two/.hidden/unmanaged_3
463
469
  - spec/fixtures/unit/util/purgeable/managed_two/expected_2
464
470
  - spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2
465
471
  - spec/fixtures/unit/util/subprocess/runner/no-execute.sh
@@ -525,6 +531,7 @@ files:
525
531
  - spec/unit/module/git_spec.rb
526
532
  - spec/unit/module/metadata_file_spec.rb
527
533
  - spec/unit/module/svn_spec.rb
534
+ - spec/unit/module_loader/puppetfile_spec.rb
528
535
  - spec/unit/module_spec.rb
529
536
  - spec/unit/puppetfile_spec.rb
530
537
  - spec/unit/settings/collection_spec.rb
@@ -576,7 +583,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
576
583
  - !ruby/object:Gem::Version
577
584
  version: '0'
578
585
  requirements: []
579
- rubygems_version: 3.0.8
586
+ rubygems_version: 3.0.3
580
587
  signing_key:
581
588
  specification_version: 4
582
589
  summary: Puppet environment and module deployment