hammer_cli_foreman 0.12.0 → 0.12.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/release_notes.md +4 -0
- data/lib/hammer_cli_foreman/host.rb +1 -0
- data/lib/hammer_cli_foreman/id_resolver.rb +6 -5
- data/lib/hammer_cli_foreman/smart_class_parameter.rb +4 -0
- data/lib/hammer_cli_foreman/smart_variable.rb +3 -0
- data/lib/hammer_cli_foreman/testing/api_expectations.rb +10 -1
- data/lib/hammer_cli_foreman/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/test/functional/smart_class_parameter_test.rb +38 -24
- data/test/unit/id_resolver_test.rb +8 -0
- 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: 8c0241ac81129df8860ec4157f08d6aae24d0bd3
|
4
|
+
data.tar.gz: ae9dcd30957ce18bbbdfe7b94129f1b53db08ea7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 446b99ddc24f96b787a5fa578f5333daee11c7697b20d3cb1df6f167fb65200620fffbb9f9e2e2fc14c64fcc63ca120492ce8f3bdc8fa41808809e3f0b35d937
|
7
|
+
data.tar.gz: ebd443959657a426311487215bbf125407a94e26bd2a28239656bc676ccc6ba8e350b1cfb5563f8eb52708025bfe57670c82b928cb3ef3808f22bdbc8653e3dc
|
data/doc/release_notes.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
Release notes
|
2
2
|
=============
|
3
|
+
### 0.12.1 (2018-03-05)
|
4
|
+
* temporary fix for override values ([#22751](http://projects.theforeman.org/issues/22751))
|
5
|
+
* raise error when wrong number of ids is resolved ([#22718](http://projects.theforeman.org/issues/22718))
|
6
|
+
* Puppetrun command is moved from hosts to puppet hosts ([#22658](http://projects.theforeman.org/issues/22658))
|
3
7
|
|
4
8
|
### 0.12.0 (2018-02-19)
|
5
9
|
* Do not resolve already resolved id params ([#22517](http://projects.theforeman.org/issues/22517))
|
@@ -172,7 +172,7 @@ module HammerCLIForeman
|
|
172
172
|
def find_resources(resource_name, options)
|
173
173
|
resource = @api.resource(resource_name)
|
174
174
|
results = resolved_call(resource_name, :index, options, :multi)
|
175
|
-
raise ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource)
|
175
|
+
raise ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource, :multi)
|
176
176
|
results
|
177
177
|
end
|
178
178
|
|
@@ -184,7 +184,7 @@ module HammerCLIForeman
|
|
184
184
|
ids
|
185
185
|
elsif !options_empty?(resource, options)
|
186
186
|
results = resolved_call(resource_name, :index, options, :multi).first.values.flatten
|
187
|
-
raise ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource)
|
187
|
+
raise ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource, :multi)
|
188
188
|
results
|
189
189
|
else
|
190
190
|
[]
|
@@ -266,10 +266,11 @@ module HammerCLIForeman
|
|
266
266
|
search_options
|
267
267
|
end
|
268
268
|
|
269
|
-
|
269
|
+
# @param mode [Symbol] mode in which ids are searched :single, :multi, nil for old beahvior
|
270
|
+
def expected_record_count(options, resource, mode = nil)
|
270
271
|
searchables(resource).each do |s|
|
271
|
-
value = options[HammerCLI.option_accessor_name(s.name.to_s)]
|
272
|
-
values = options[HammerCLI.option_accessor_name(s.plural_name.to_s)]
|
272
|
+
value = options[HammerCLI.option_accessor_name(s.name.to_s)] unless mode == :multi
|
273
|
+
values = options[HammerCLI.option_accessor_name(s.plural_name.to_s)] unless mode == :single
|
273
274
|
if value
|
274
275
|
return 1
|
275
276
|
elsif values
|
@@ -105,6 +105,8 @@ module HammerCLIForeman
|
|
105
105
|
success_message _("Parameter updated.")
|
106
106
|
failure_message _("Could not update the parameter")
|
107
107
|
|
108
|
+
option '--default-value', 'VALUE', _('Value to use when there is no match')
|
109
|
+
|
108
110
|
build_options do |options|
|
109
111
|
options.expand.including(:puppetclasses)
|
110
112
|
options.without(:parameter_type, :validator_type, :override, :required, :override_value_order)
|
@@ -140,6 +142,8 @@ module HammerCLIForeman
|
|
140
142
|
resource :override_values
|
141
143
|
command_name 'add-matcher'
|
142
144
|
|
145
|
+
option '--value', 'VALUE', _('Override value, required if omit is false')
|
146
|
+
|
143
147
|
success_message _("Override value created.")
|
144
148
|
failure_message _("Could not create the override value")
|
145
149
|
|
@@ -10,6 +10,7 @@ module HammerCLIForeman
|
|
10
10
|
:format => HammerCLI::Options::Normalizers::Enum.new(['regexp', 'list', ''])
|
11
11
|
base.option "--override-value-order", "OVERRIDE_VALUE_ORDER", _("The order in which values are resolved"),
|
12
12
|
:format => HammerCLI::Options::Normalizers::List.new
|
13
|
+
base.option '--default-value', 'VALUE', _('Value to use when there is no match')
|
13
14
|
|
14
15
|
base.build_options :without => [:variable_type, :validator_type, :override_value_order]
|
15
16
|
end
|
@@ -129,6 +130,8 @@ module HammerCLIForeman
|
|
129
130
|
resource :override_values
|
130
131
|
command_name 'add-matcher'
|
131
132
|
|
133
|
+
option '--value', 'VALUE', _('Override value, required if omit is false')
|
134
|
+
|
132
135
|
success_message _("Override value created.")
|
133
136
|
failure_message _("Could not create the override value")
|
134
137
|
|
@@ -33,7 +33,7 @@ module HammerCLIForeman
|
|
33
33
|
|
34
34
|
protected
|
35
35
|
def assert_params(params)
|
36
|
-
params == deep_merge_hash(params, @expected_params)
|
36
|
+
stringify_keys(params) == deep_merge_hash(stringify_keys(params), stringify_keys(@expected_params))
|
37
37
|
end
|
38
38
|
|
39
39
|
def deep_merge_hash(h, other_h)
|
@@ -46,6 +46,15 @@ module HammerCLIForeman
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
49
|
+
|
50
|
+
def stringify_keys(hash)
|
51
|
+
hash.inject({}) do |stringified, (key, value)|
|
52
|
+
if value.is_a?(Hash)
|
53
|
+
value = stringify_keys(value)
|
54
|
+
end
|
55
|
+
stringified.update(key.to_s => value)
|
56
|
+
end
|
57
|
+
end
|
49
58
|
end
|
50
59
|
|
51
60
|
module ExpectationExtensions
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -32,38 +32,52 @@ describe 'sc-params add-matcher' do
|
|
32
32
|
'--match', match
|
33
33
|
] }
|
34
34
|
|
35
|
+
def api_expects_parameter_search(puppet_class, parameter)
|
36
|
+
api_expects(:puppetclasses, :index, 'Find puppet class') do |par|
|
37
|
+
par[:search] == %Q(name = "#{puppet_class['name']}")
|
38
|
+
end.returns(index_response('motd' => [puppet_class]))
|
39
|
+
|
40
|
+
api_expects(:smart_class_parameters, :index, 'Find smart parameter') do |par|
|
41
|
+
par[:search] == %Q(key = "#{parameter['name']}") &&
|
42
|
+
par[:puppetclass_id] == puppet_class['id']
|
43
|
+
end.returns(index_response([parameter]))
|
44
|
+
end
|
45
|
+
|
35
46
|
it 'allows to set value' do
|
36
47
|
params = ['--value', override_value]
|
37
48
|
expected_result = success_result("Override value created.\n")
|
38
49
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
expectations << api_expects(:override_values, :create, 'Create override value') do |par|
|
51
|
-
val = par['override_value']
|
52
|
-
par['smart_class_parameter_id'] == parameter['id'] &&
|
53
|
-
val['match'] == match &&
|
54
|
-
val['value'] == override_value
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
expectations = prepare_api_expectations.call()
|
50
|
+
api_expects_parameter_search(puppet_class, parameter)
|
51
|
+
|
52
|
+
api_expects(:override_values, :create, 'Create override value').with_params(
|
53
|
+
:smart_class_parameter_id => parameter['id'],
|
54
|
+
:override_value => {
|
55
|
+
:match => match,
|
56
|
+
:value => override_value
|
57
|
+
}
|
58
|
+
)
|
59
|
+
|
59
60
|
result = run_cmd(cmd + base + params)
|
60
61
|
assert_cmd(expected_result, result)
|
61
|
-
|
62
|
+
end
|
62
63
|
|
63
|
-
|
64
|
-
|
64
|
+
it 'allows to set value with disabled puppet default' do
|
65
|
+
params = ['--value', override_value, '--use-puppet-default', false]
|
66
|
+
expected_result = success_result("Override value created.\n")
|
67
|
+
|
68
|
+
api_expects_parameter_search(puppet_class, parameter)
|
69
|
+
|
70
|
+
api_expects(:override_values, :create, 'Create override value').with_params(
|
71
|
+
:smart_class_parameter_id => parameter['id'],
|
72
|
+
:override_value => {
|
73
|
+
:match => match,
|
74
|
+
:value => override_value,
|
75
|
+
:use_puppet_default => false
|
76
|
+
}
|
77
|
+
)
|
78
|
+
|
79
|
+
result = run_cmd(cmd + base + params)
|
65
80
|
assert_cmd(expected_result, result)
|
66
|
-
assert expectations.all?(&:verified?)
|
67
81
|
end
|
68
82
|
|
69
83
|
it 'does not allow to use puppet default and value at the same time' do
|
@@ -253,6 +253,14 @@ describe HammerCLIForeman::IdResolver do
|
|
253
253
|
assert_equal [john_id, jane_id], resolver.user_ids({"option_names" => ["John Doe", "Jane Doe"]})
|
254
254
|
end
|
255
255
|
|
256
|
+
it "raises exception when wrong number of resources is found even with conflicting options" do
|
257
|
+
ResourceMocks.mock_action_call(:users, :index, [john])
|
258
|
+
|
259
|
+
assert_raises HammerCLIForeman::ResolverError do
|
260
|
+
resolver.user_ids({"option_names" => ["John Doe", "Jane Doe"], "option_name" => "group1"})
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
256
264
|
it "raises exception when wrong number of resources is found" do
|
257
265
|
ResourceMocks.mock_action_call(:users, :index, [john])
|
258
266
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hammer_cli_foreman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomáš Strachota
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-03-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hammer_cli
|