kafo 2.1.0 → 3.0.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 (45) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +56 -98
  3. data/Rakefile +12 -1
  4. data/lib/kafo/color_scheme.rb +3 -3
  5. data/lib/kafo/configuration.rb +5 -7
  6. data/lib/kafo/data_types/aliases.rb +0 -10
  7. data/lib/kafo/data_types/not_undef.rb +2 -0
  8. data/lib/kafo/data_types/optional.rb +2 -0
  9. data/lib/kafo/hiera_configurer.rb +50 -22
  10. data/lib/kafo/hook_context.rb +3 -2
  11. data/lib/kafo/kafo_configure.rb +9 -8
  12. data/lib/kafo/logger.rb +2 -2
  13. data/lib/kafo/param.rb +6 -20
  14. data/lib/kafo/param_builder.rb +1 -8
  15. data/lib/kafo/progress_bar.rb +1 -1
  16. data/lib/kafo/puppet_command.rb +4 -21
  17. data/lib/kafo/puppet_module.rb +2 -13
  18. data/lib/kafo/scenario_manager.rb +6 -6
  19. data/lib/kafo/version.rb +1 -1
  20. data/modules/kafo_configure/Rakefile +1 -0
  21. data/modules/kafo_configure/lib/puppet/functions/{dump_lookups.rb → kafo_configure/dump_lookups.rb} +2 -1
  22. data/modules/kafo_configure/lib/puppet/functions/kafo_configure/dump_variables.rb +13 -0
  23. data/modules/kafo_configure/lib/puppet/functions/kafo_configure/to_yaml.rb +15 -0
  24. data/modules/kafo_configure/manifests/dump_values.pp +11 -12
  25. data/modules/kafo_configure/manifests/init.pp +7 -5
  26. data/modules/kafo_configure/manifests/puppet_version_semver.pp +1 -1
  27. data/modules/kafo_configure/metadata.json +15 -0
  28. data/modules/kafo_configure/spec/classes/dump_values_spec.rb +24 -0
  29. data/modules/kafo_configure/spec/classes/init_spec.rb +17 -0
  30. data/modules/kafo_configure/spec/fixtures/hiera/hiera.yaml +7 -0
  31. data/modules/kafo_configure/spec/fixtures/hiera/test.yaml +4 -0
  32. data/modules/kafo_configure/spec/fixtures/modules/dummy/manifests/init.pp +5 -0
  33. data/modules/kafo_configure/spec/fixtures/modules/dummy/manifests/params.pp +3 -0
  34. data/modules/kafo_configure/spec/functions/dump_lookups_spec.rb +7 -0
  35. data/modules/kafo_configure/spec/functions/dump_variables_spec.rb +10 -0
  36. data/modules/kafo_configure/spec/functions/to_yaml_spec.rb +5 -0
  37. data/modules/kafo_configure/spec/spec_helper.rb +5 -0
  38. metadata +48 -35
  39. data/lib/kafo/params/password.rb +0 -60
  40. data/lib/kafo/validator.rb +0 -122
  41. data/modules/kafo_configure/lib/puppet/parser/functions/decrypt.rb +0 -16
  42. data/modules/kafo_configure/lib/puppet/parser/functions/dump_values.rb +0 -13
  43. data/modules/kafo_configure/lib/puppet/parser/functions/foreman_to_yaml.rb +0 -13
  44. data/modules/kafo_configure/lib/puppet/parser/functions/load_kafo_password.rb +0 -13
  45. data/modules/kafo_configure/manifests/puppet_version_versioncmp.pp +0 -9
@@ -0,0 +1,7 @@
1
+ ---
2
+ :backends:
3
+ - yaml
4
+ :hierarchy:
5
+ - test
6
+ :yaml:
7
+ :datadir: 'spec/fixtures/hiera'
@@ -0,0 +1,4 @@
1
+ ---
2
+ classes:
3
+ - dummy
4
+ my_module::param: override
@@ -0,0 +1,5 @@
1
+ class dummy (
2
+ String $first = $dummy::params::first,
3
+ Optional[Integer] $second = undef,
4
+ ) inherits dummy::params {
5
+ }
@@ -0,0 +1,3 @@
1
+ class dummy::params {
2
+ $first = 'foo'
3
+ }
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'kafo_configure::dump_lookups' do
4
+ let(:hiera_config) { 'spec/fixtures/hiera/hiera.yaml' }
5
+ it { is_expected.to run.with_params([]).and_return({}) }
6
+ it { is_expected.to run.with_params(['my_module::param']).and_return({'my_module::param' => 'override'}) }
7
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'kafo_configure::dump_variables' do
4
+ it { is_expected.to run.with_params([]).and_return({}) }
5
+
6
+ context 'with values' do
7
+ let(:pre_condition) { 'include dummy' }
8
+ it { is_expected.to run.with_params(['dummy::first']).and_return({'dummy::first' => 'foo'}) }
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'kafo_configure::to_yaml' do
4
+ it { is_expected.to run.with_params({}, {}).and_return("--- {}\n\n...\n") }
5
+ end
@@ -0,0 +1,5 @@
1
+ RSpec.configure do |c|
2
+ c.mock_with :rspec
3
+ end
4
+
5
+ require 'puppetlabs_spec_helper/module_spec_helper'
metadata CHANGED
@@ -1,85 +1,91 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kafo
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marek Hulan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-18 00:00:00.000000000 Z
11
+ date: 2019-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.3'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rake
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "<"
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: 11.0.0
39
+ version: '0'
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - "<"
44
+ - - ">="
39
45
  - !ruby/object:Gem::Version
40
- version: 11.0.0
46
+ version: '0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: minitest
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - "~>"
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
- version: '4.0'
53
+ version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - "~>"
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
- version: '4.0'
60
+ version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: simplecov
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - "<"
65
+ - - ">="
60
66
  - !ruby/object:Gem::Version
61
- version: '0.9'
67
+ version: '0'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - "<"
72
+ - - ">="
67
73
  - !ruby/object:Gem::Version
68
- version: '0.9'
74
+ version: '0'
69
75
  - !ruby/object:Gem::Dependency
70
- name: ci_reporter
76
+ name: ci_reporter_minitest
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
- - - "~>"
79
+ - - ">="
74
80
  - !ruby/object:Gem::Version
75
- version: 1.9.0
81
+ version: '1.0'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
- - - "~>"
86
+ - - ">="
81
87
  - !ruby/object:Gem::Version
82
- version: 1.9.0
88
+ version: '1.0'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: kafo_wizards
85
91
  requirement: !ruby/object:Gem::Requirement
@@ -184,7 +190,8 @@ dependencies:
184
190
  - - ">="
185
191
  - !ruby/object:Gem::Version
186
192
  version: '0'
187
- description: A gem for making installations based on puppet user friendly
193
+ description: If you write puppet modules for installing your software, you can use
194
+ kafo to create powerful installer
188
195
  email:
189
196
  - ares@igloonet.cz
190
197
  executables:
@@ -247,7 +254,6 @@ files:
247
254
  - lib/kafo/param.rb
248
255
  - lib/kafo/param_builder.rb
249
256
  - lib/kafo/param_group.rb
250
- - lib/kafo/params/password.rb
251
257
  - lib/kafo/parser_cache_reader.rb
252
258
  - lib/kafo/parser_cache_writer.rb
253
259
  - lib/kafo/password_manager.rb
@@ -262,22 +268,30 @@ files:
262
268
  - lib/kafo/store.rb
263
269
  - lib/kafo/string_helper.rb
264
270
  - lib/kafo/system_checker.rb
265
- - lib/kafo/validator.rb
266
271
  - lib/kafo/version.rb
267
272
  - lib/kafo/wizard.rb
268
- - modules/kafo_configure/lib/puppet/functions/dump_lookups.rb
273
+ - modules/kafo_configure/Rakefile
274
+ - modules/kafo_configure/lib/puppet/functions/kafo_configure/dump_lookups.rb
275
+ - modules/kafo_configure/lib/puppet/functions/kafo_configure/dump_variables.rb
276
+ - modules/kafo_configure/lib/puppet/functions/kafo_configure/to_yaml.rb
269
277
  - modules/kafo_configure/lib/puppet/parser/functions/add_progress.rb
270
- - modules/kafo_configure/lib/puppet/parser/functions/decrypt.rb
271
- - modules/kafo_configure/lib/puppet/parser/functions/dump_values.rb
272
- - modules/kafo_configure/lib/puppet/parser/functions/foreman_to_yaml.rb
273
- - modules/kafo_configure/lib/puppet/parser/functions/load_kafo_password.rb
274
278
  - modules/kafo_configure/manifests/dump_values.pp
275
279
  - modules/kafo_configure/manifests/init.pp
276
280
  - modules/kafo_configure/manifests/puppet_version_semver.pp
277
- - modules/kafo_configure/manifests/puppet_version_versioncmp.pp
281
+ - modules/kafo_configure/metadata.json
282
+ - modules/kafo_configure/spec/classes/dump_values_spec.rb
283
+ - modules/kafo_configure/spec/classes/init_spec.rb
284
+ - modules/kafo_configure/spec/fixtures/hiera/hiera.yaml
285
+ - modules/kafo_configure/spec/fixtures/hiera/test.yaml
286
+ - modules/kafo_configure/spec/fixtures/modules/dummy/manifests/init.pp
287
+ - modules/kafo_configure/spec/fixtures/modules/dummy/manifests/params.pp
288
+ - modules/kafo_configure/spec/functions/dump_lookups_spec.rb
289
+ - modules/kafo_configure/spec/functions/dump_variables_spec.rb
290
+ - modules/kafo_configure/spec/functions/to_yaml_spec.rb
291
+ - modules/kafo_configure/spec/spec_helper.rb
278
292
  homepage: https://github.com/theforeman/kafo
279
293
  licenses:
280
- - GPLv3+
294
+ - GPL-3.0+
281
295
  metadata: {}
282
296
  post_install_message:
283
297
  rdoc_options: []
@@ -287,7 +301,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
301
  requirements:
288
302
  - - ">="
289
303
  - !ruby/object:Gem::Version
290
- version: '0'
304
+ version: 2.0.0
291
305
  required_rubygems_version: !ruby/object:Gem::Requirement
292
306
  requirements:
293
307
  - - ">="
@@ -295,9 +309,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
295
309
  version: '0'
296
310
  requirements: []
297
311
  rubyforge_project:
298
- rubygems_version: 2.6.8
312
+ rubygems_version: 2.7.6
299
313
  signing_key:
300
314
  specification_version: 4
301
- summary: If you write puppet modules for installing your software, you can use kafo
302
- to create powerful installer
315
+ summary: A gem for making installations based on puppet user friendly
303
316
  test_files: []
@@ -1,60 +0,0 @@
1
- module Kafo
2
- module Params
3
- # A password paramater is stored encrypted in answer file using AES 256 in CBC mode
4
- #
5
- # we use a passphrase that is stored in kafo.yaml for encryption
6
- # encrypted password is prefixed with $1$ (for historical reasons, no connection to
7
- # Modular Crypt Format)
8
- class Password < Param
9
- def value=(value)
10
- super
11
- if @value.nil? || @value.empty?
12
- @value = password_manager.password
13
- end
14
- setup_password if @value.is_a?(::String)
15
- @value
16
- end
17
-
18
- def value
19
- @encrypted
20
- end
21
-
22
- private
23
-
24
- def setup_password
25
- encrypted? ? decrypt : encrypt
26
- end
27
-
28
- def encrypted?
29
- @value.length > 3 && @value[0..2] == '$1$'
30
- end
31
-
32
- def decrypt
33
- @encrypted = @value
34
- @value = password_manager.aes_decrypt(@value[3..-1], phrase)
35
- end
36
-
37
- def encrypt
38
- @encrypted = '$1$' + password_manager.aes_encrypt(@value, phrase)
39
- end
40
-
41
- def password_manager
42
- @password_manager ||= PasswordManager.new
43
- end
44
-
45
- def phrase
46
- @module.configuration.app[:password]
47
- end
48
-
49
- def internal_value_to_s(value)
50
- if value.nil?
51
- super
52
- elsif value.empty?
53
- ''.inspect
54
- else
55
- 'REDACTED'
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1,122 +0,0 @@
1
- # encoding: UTF-8
2
- module Kafo
3
- class Validator
4
- attr_reader :errors
5
-
6
- def initialize
7
- @errors = []
8
- @logger = KafoConfigure.logger
9
- end
10
-
11
- def validate_absolute_path(args)
12
- args.each do |arg|
13
- unless arg.to_s.start_with?('/')
14
- error "#{arg.inspect} is not an absolute path"
15
- return false
16
- end
17
- end
18
- return true
19
- end
20
-
21
- def validate_array(args)
22
- args.each do |arg|
23
- unless arg.is_a?(Array)
24
- error "#{arg.inspect} is not a valid array"
25
- return false
26
- end
27
- end
28
- return true
29
- end
30
-
31
- def validate_bool(args)
32
- args.each do |arg|
33
- unless arg.is_a?(TrueClass) || arg.is_a?(FalseClass)
34
- error "#{arg.inspect} is not a valid boolean"
35
- return false
36
- end
37
- end
38
- return true
39
- end
40
-
41
- def validate_hash(args)
42
- args.each do |arg|
43
- unless arg.is_a?(Hash)
44
- error "#{arg.inspect} is not a valid hash"
45
- return false
46
- end
47
- end
48
- return true
49
- end
50
-
51
- def validate_integer(args)
52
- value = args[0]
53
- max = args[1]
54
- min = args[2]
55
- int = Integer(value.to_s)
56
- if min && int < min.to_i
57
- error "#{value} must be at least #{min}"
58
- return false
59
- end
60
- if max && int > max.to_i
61
- error "#{value} must be less than #{max}"
62
- return false
63
- end
64
- return true
65
- rescue TypeError, ArgumentError
66
- error "#{value.inspect} is not a valid integer"
67
- return false
68
- end
69
-
70
- # Non-standard validation is from theforeman/foreman_proxy module
71
- def validate_listen_on(args)
72
- valid_values = ['http', 'https', 'both']
73
- args.each do |arg|
74
- unless valid_values.include?(arg)
75
- error "#{arg.inspect} is not a valid value. Valid values are: #{valid_values.join(", ")}"
76
- return false
77
- end
78
- end
79
- return true
80
- end
81
-
82
- def validate_re(args)
83
- value = args[0]
84
- regexes = args[1]
85
- regexes = [regexes] unless regexes.is_a?(Array)
86
- message = args[2] || "#{value.inspect} does not match the accepted inputs: #{regexes.join(", ")}"
87
-
88
- if regexes.any? { |rx| value =~ Regexp.compile(rx) }
89
- return true
90
- else
91
- error message
92
- return false
93
- end
94
- end
95
-
96
- def validate_string(args)
97
- args.each do |arg|
98
- unless arg.is_a?(String)
99
- error "#{arg.inspect} is not a valid string"
100
- return false
101
- end
102
- end
103
- return true
104
- end
105
-
106
- def method_missing(method, *args, &block)
107
- if method.to_s.start_with?('validate_')
108
- @logger.debug "Skipping validation with #{method} as it's not implemented in Kafo"
109
- return true
110
- else
111
- super
112
- end
113
- end
114
-
115
- private
116
-
117
- def error(message)
118
- @errors << message
119
- @logger.error "Validation error: #{message}"
120
- end
121
- end
122
- end
@@ -1,16 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../../../../../../lib/kafo/password_manager')
2
- # Decrypts an encrypted password using $kafo_configure::password
3
- #
4
- # you can use this function in order to place passwords into your config files
5
- # in form of a plain text
6
- module Puppet::Parser::Functions
7
- newfunction(:decrypt, :type => :rvalue) do |args|
8
- encrypted = args[0]
9
- if encrypted =~ /\A\$1\$/
10
- PasswordManager.new.aes_decrypt(encrypted[3..-1], lookupvar('::kafo_configure::password'))
11
- else
12
- raise Puppet::ParseError, 'wrong format of encrypted string, should start with $1$'
13
- end
14
- end
15
- end
16
-