kafo 0.8.1 → 0.8.2
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/README.md +19 -0
- data/lib/kafo/configuration.rb +1 -1
- data/lib/kafo/help_builders/base.rb +5 -1
- data/lib/kafo/help_builders/basic.rb +7 -1
- data/lib/kafo/kafo_configure.rb +7 -1
- data/lib/kafo/param.rb +12 -8
- data/lib/kafo/string_helper.rb +2 -2
- data/lib/kafo/version.rb +1 -1
- data/lib/kafo/wizard.rb +21 -0
- data/modules/kafo_configure/lib/kafo/puppet/report_wrapper.rb +5 -1
- data/modules/kafo_configure/lib/puppet/parser/functions/add_progress.rb +21 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13fc7c4d5d0d30aa719d2af9047ed92bf5a6c93c
|
4
|
+
data.tar.gz: cc7e5c57c7e3f5e888c8db5e963d43bdb505dc01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0065c3f73debd2dc8056185c91bc5a48c822b5baaa31e47f84d9758e59ceca260c735953060bc5628188ecb14d9ece380709c695483faaa32954e21cc45eef6d
|
7
|
+
data.tar.gz: c58bf1204a85e7bd5c9273baec1a93e5f6f5a8ced3bbc2bfc027f54840d42930cb891720a9e182fd5e57a17c0020f1f10d471893f27d3b8af54c645147bfc2c9
|
data/README.md
CHANGED
@@ -507,6 +507,25 @@ as key:value.
|
|
507
507
|
When parsing the value, the first colon divides key and value. All other
|
508
508
|
colons are ignored.
|
509
509
|
|
510
|
+
## Resetting an argument
|
511
|
+
|
512
|
+
Existing stored parameters can be reset back to their default value from the
|
513
|
+
command line or interactive mode. This deletes the stored value in the answers
|
514
|
+
file and stores the default from the Puppet manifest in its place.
|
515
|
+
|
516
|
+
The default value is the value set in, or computed by the Puppet params
|
517
|
+
manifest. This will _not_ reset to any defaults specified in the answers file
|
518
|
+
before running the Kafo-based installer, they are not kept.
|
519
|
+
|
520
|
+
Using the CLI, a --reset option is available for every parameter, e.g.
|
521
|
+
|
522
|
+
```bash
|
523
|
+
bin/foreman-installer --reset-puppet-server-git-branch-map
|
524
|
+
```
|
525
|
+
|
526
|
+
The parameter can also be reset to the default in interactive mode, via the
|
527
|
+
reset parameters sub-menu under each module.
|
528
|
+
|
510
529
|
## Grouping in interactive mode
|
511
530
|
|
512
531
|
If your module has too many parameters you may find the grouping feature useful.
|
data/lib/kafo/configuration.rb
CHANGED
@@ -139,7 +139,7 @@ module Kafo
|
|
139
139
|
temp_dir = Dir.mktmpdir(nil, app[:default_values_dir])
|
140
140
|
KafoConfigure.exit_handler.register_cleanup_path temp_dir
|
141
141
|
@logger.info 'Loading default values from puppet modules...'
|
142
|
-
command = PuppetCommand.new("$temp_dir=\"#{temp_dir}\" #{includes} dump_values(#{params_to_dump})", ['--noop'], self).append('2>&1').command
|
142
|
+
command = PuppetCommand.new("$temp_dir=\"#{temp_dir}\" #{includes} dump_values(#{params_to_dump})", ['--noop', '--reports='], self).append('2>&1').command
|
143
143
|
result = `#{command}`
|
144
144
|
@logger.debug result
|
145
145
|
unless $?.exitstatus == 0
|
@@ -82,7 +82,11 @@ module Kafo
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def parametrization
|
85
|
-
@parametrization ||=
|
85
|
+
@parametrization ||= begin
|
86
|
+
@params.inject({}) do |h,p|
|
87
|
+
h.update(parametrize(p) => p, parametrize(p, 'reset-') => p)
|
88
|
+
end
|
89
|
+
end
|
86
90
|
end
|
87
91
|
end
|
88
92
|
end
|
@@ -4,9 +4,15 @@ module Kafo
|
|
4
4
|
module HelpBuilders
|
5
5
|
class Basic < Base
|
6
6
|
def add_module(name, items)
|
7
|
-
data = by_parameter_groups(items)
|
7
|
+
data = by_parameter_groups(except_resets(items))
|
8
8
|
add_list(module_header(name), data['Basic'])
|
9
9
|
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def except_resets(items)
|
14
|
+
items.select { |i| !i.help.first.strip.start_with?('--reset-') || !i.help.last.strip.end_with?('to the default value') }
|
15
|
+
end
|
10
16
|
end
|
11
17
|
end
|
12
18
|
end
|
data/lib/kafo/kafo_configure.rb
CHANGED
@@ -301,6 +301,8 @@ module Kafo
|
|
301
301
|
doc = param.doc.nil? ? 'UNDOCUMENTED' : param.doc.join("\n")
|
302
302
|
self.class.option parametrize(param), '', doc,
|
303
303
|
:default => param.value, :multivalued => param.multivalued?
|
304
|
+
self.class.option parametrize(param, 'reset-'), :flag,
|
305
|
+
"Reset #{param.name} to the default value"
|
304
306
|
end
|
305
307
|
end
|
306
308
|
|
@@ -345,8 +347,11 @@ module Kafo
|
|
345
347
|
# enable/disable modules according to CLI
|
346
348
|
config.modules.each { |mod| send("enable_#{mod.name}?") ? mod.enable : mod.disable }
|
347
349
|
|
348
|
-
# set values coming from CLI arguments
|
350
|
+
# set and reset values coming from CLI arguments
|
349
351
|
params.each do |param|
|
352
|
+
if send("reset_#{u(with_prefix(param))}?")
|
353
|
+
param.unset_value
|
354
|
+
end
|
350
355
|
variable_name = u(with_prefix(param))
|
351
356
|
variable_name += '_list' if param.multivalued?
|
352
357
|
cli_value = instance_variable_get("@#{variable_name}")
|
@@ -380,6 +385,7 @@ module Kafo
|
|
380
385
|
'--color=false',
|
381
386
|
'--show_diff',
|
382
387
|
'--detailed-exitcodes',
|
388
|
+
'--reports=',
|
383
389
|
]
|
384
390
|
options.push '--noop' if noop?
|
385
391
|
options.push '--profile' if profile?
|
data/lib/kafo/param.rb
CHANGED
@@ -23,9 +23,15 @@ module Kafo
|
|
23
23
|
|
24
24
|
def value=(value)
|
25
25
|
@value_set = true
|
26
|
+
value = value.to_s if value.is_a?(::HighLine::String) # don't persist highline extensions
|
26
27
|
@value = value == 'UNDEF' ? nil : value
|
27
28
|
end
|
28
29
|
|
30
|
+
def unset_value
|
31
|
+
@value_set = false
|
32
|
+
@value = nil
|
33
|
+
end
|
34
|
+
|
29
35
|
def dump_default
|
30
36
|
default
|
31
37
|
end
|
@@ -40,7 +46,7 @@ module Kafo
|
|
40
46
|
|
41
47
|
def set_default(defaults)
|
42
48
|
if default == 'UNSET'
|
43
|
-
self.
|
49
|
+
self.default = nil
|
44
50
|
else
|
45
51
|
if defaults.has_key?(default)
|
46
52
|
value = defaults[default]
|
@@ -48,21 +54,19 @@ module Kafo
|
|
48
54
|
when :undef
|
49
55
|
# value can be set to :undef if value is not defined
|
50
56
|
# (e.g. puppetmaster = $::puppetmaster which is not defined yet)
|
51
|
-
self.
|
57
|
+
self.default = nil
|
52
58
|
when :undefined
|
53
59
|
# in puppet 2.7 :undefined means that it's param which value is
|
54
60
|
# not set by another parameter (e.g. foreman_group = 'something')
|
55
61
|
# which means, default is sensible unlike dumped default
|
56
62
|
# newer puppet has default dump in format 'value' => 'value' so
|
57
63
|
# it's handled correctly by else branch
|
58
|
-
self.value = self.default
|
59
64
|
else
|
60
|
-
self.
|
65
|
+
self.default = value
|
61
66
|
end
|
62
|
-
# if we don't have default value from dump (can happen for modules added from hooks
|
63
|
-
#
|
64
|
-
|
65
|
-
self.value = self.default
|
67
|
+
# if we don't have default value from dump (can happen for modules added from hooks,
|
68
|
+
# or without using a params class), the existing default value from the manifest will
|
69
|
+
# be used. On calling #value, the default will be returned if no overriding value is set.
|
66
70
|
end
|
67
71
|
end
|
68
72
|
end
|
data/lib/kafo/string_helper.rb
CHANGED
data/lib/kafo/version.rb
CHANGED
data/lib/kafo/wizard.rb
CHANGED
@@ -87,6 +87,7 @@ END
|
|
87
87
|
others.each do |group|
|
88
88
|
menu.choice("Configure #{group.formatted_name}") { configure_group(group) }
|
89
89
|
end
|
90
|
+
menu.choice("Reset a parameter to its default value") { reset_module_params(mod) }
|
90
91
|
end
|
91
92
|
menu.choice("Back to main menu") { go_back = true }
|
92
93
|
end
|
@@ -153,6 +154,26 @@ END
|
|
153
154
|
agree("Enable #{mod.name} module? (y/n) ") ? mod.enable : mod.disable
|
154
155
|
end
|
155
156
|
|
157
|
+
def reset_module_params(mod)
|
158
|
+
go_back = false
|
159
|
+
until go_back
|
160
|
+
say "\n" + HighLine.color("Resetting parameters of module #{mod.name}", :headline)
|
161
|
+
choose do |menu|
|
162
|
+
mod.params.each do |param|
|
163
|
+
menu.choice "Reset #{HighLine.color(param.name, :important)}, current value: #{HighLine.color(param.value.to_s, :info)}, default value: #{HighLine.color(param.default.to_s, :info)}" do
|
164
|
+
reset(param)
|
165
|
+
end if param.visible?(@kafo.params)
|
166
|
+
end
|
167
|
+
menu.choice("Back to parent menu") { go_back = true }
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def reset(param)
|
173
|
+
param.unset_value
|
174
|
+
say "\n" + HighLine.color("Value for #{param.name} reset to default", :important)
|
175
|
+
end
|
176
|
+
|
156
177
|
def setup_terminal
|
157
178
|
$terminal = HighLine.new
|
158
179
|
data = HighLine::SystemExtensions.terminal_size
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
1
3
|
module Kafo
|
2
4
|
module Puppet
|
3
5
|
class ReportWrapper
|
@@ -7,6 +9,7 @@ module Kafo
|
|
7
9
|
@transaction = transaction
|
8
10
|
@report = report
|
9
11
|
@supported = true
|
12
|
+
@resources_seen = Set.new
|
10
13
|
end
|
11
14
|
|
12
15
|
# Needed to fool Puppet's logging framework
|
@@ -16,8 +19,9 @@ module Kafo
|
|
16
19
|
|
17
20
|
def add_resource_status(status, *args, &block)
|
18
21
|
if @supported && report.respond_to?(:resource_statuses) && report.resource_statuses.is_a?(Hash)
|
19
|
-
if transaction.in_main_catalog && report.resource_statuses[status.resource.to_s] && transaction.
|
22
|
+
if transaction.in_main_catalog && report.resource_statuses[status.resource.to_s] && transaction.tracked_resources.include?(status.resource) && !@resources_seen.include?(status.resource)
|
20
23
|
::Puppet.info "RESOURCE #{status.resource}"
|
24
|
+
@resources_seen << status.resource
|
21
25
|
end
|
22
26
|
report.add_resource_status(status, *args, &block)
|
23
27
|
else
|
@@ -2,33 +2,36 @@ require 'kafo_configure/lib/kafo/puppet/report_wrapper'
|
|
2
2
|
|
3
3
|
module Puppet::Parser::Functions
|
4
4
|
newfunction(:add_progress) do |args|
|
5
|
-
|
6
|
-
|
7
|
-
# Monkey patch the transaction to put our wrapper around the report object
|
5
|
+
loaded = false
|
6
|
+
begin
|
8
7
|
require 'puppet/transaction'
|
8
|
+
loaded = true
|
9
|
+
rescue LoadError
|
10
|
+
::Puppet.warning 'Unable to load puppet/transaction for progress bar support, this version may not be supported'
|
11
|
+
end
|
12
|
+
|
13
|
+
if loaded
|
14
|
+
# Monkey patch the transaction to put our wrapper around the report object
|
9
15
|
class Puppet::Transaction
|
10
16
|
attr_accessor :in_main_catalog
|
11
17
|
|
12
18
|
def is_interesting?(resource)
|
13
|
-
![:schedule, :class, :stage, :filebucket].include?(resource.to_s.split('[')[0].downcase.to_sym)
|
19
|
+
![:schedule, :class, :stage, :filebucket, :anchor, :'kafo_configure::yaml_to_class'].include?(resource.to_s.split('[')[0].downcase.to_sym)
|
14
20
|
end
|
15
21
|
|
16
|
-
def
|
17
|
-
catalog.vertices.select { |resource| is_interesting?(resource) }.
|
22
|
+
def tracked_resources
|
23
|
+
@tracked_resources ||= catalog.vertices.select { |resource| is_interesting?(resource) }.map(&:to_s)
|
18
24
|
end
|
19
25
|
|
20
26
|
def evaluate_with_trigger(*args, &block)
|
21
27
|
if catalog.version
|
22
28
|
self.in_main_catalog = true
|
23
|
-
::Puppet.info "START #{
|
29
|
+
::Puppet.info "START #{tracked_resources.size}"
|
24
30
|
end
|
25
31
|
evaluate_without_trigger(*args, &block)
|
26
32
|
self.in_main_catalog = false if catalog.version
|
27
33
|
end
|
28
34
|
|
29
|
-
alias_method :evaluate_without_trigger, :evaluate
|
30
|
-
alias_method :evaluate, :evaluate_with_trigger
|
31
|
-
|
32
35
|
def report_with_wrapper
|
33
36
|
unless @report_wrapper
|
34
37
|
@report_wrapper = Kafo::Puppet::ReportWrapper.new(self, report_without_wrapper)
|
@@ -36,11 +39,15 @@ module Puppet::Parser::Functions
|
|
36
39
|
@report_wrapper
|
37
40
|
end
|
38
41
|
|
39
|
-
|
40
|
-
|
42
|
+
if method_defined?(:evaluate) && method_defined?(:report)
|
43
|
+
alias_method :evaluate_without_trigger, :evaluate
|
44
|
+
alias_method :evaluate, :evaluate_with_trigger
|
45
|
+
alias_method :report_without_wrapper, :report
|
46
|
+
alias_method :report, :report_with_wrapper
|
47
|
+
else
|
48
|
+
::Puppet.warning 'Unable to patch Puppet transactions for progress bar support, this version may not be supported'
|
49
|
+
end
|
41
50
|
end
|
42
|
-
else
|
43
|
-
::Puppet.warning 'Your puppet version does not support progress bar'
|
44
51
|
end
|
45
52
|
end
|
46
53
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kafo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marek Hulan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|