hammer_cli_foreman 2.5.1 → 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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/doc/release_notes.md +10 -1
  3. data/lib/hammer_cli_foreman.rb +0 -21
  4. data/lib/hammer_cli_foreman/architecture.rb +5 -5
  5. data/lib/hammer_cli_foreman/associating_commands.rb +0 -24
  6. data/lib/hammer_cli_foreman/bookmark.rb +5 -5
  7. data/lib/hammer_cli_foreman/combination.rb +3 -13
  8. data/lib/hammer_cli_foreman/command_extensions.rb +0 -2
  9. data/lib/hammer_cli_foreman/commands.rb +2 -9
  10. data/lib/hammer_cli_foreman/compute_profile.rb +5 -5
  11. data/lib/hammer_cli_foreman/host.rb +0 -35
  12. data/lib/hammer_cli_foreman/hostgroup.rb +2 -53
  13. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +1 -23
  14. data/lib/hammer_cli_foreman/id_resolver.rb +0 -61
  15. data/lib/hammer_cli_foreman/location.rb +0 -6
  16. data/lib/hammer_cli_foreman/mail_notification.rb +2 -2
  17. data/lib/hammer_cli_foreman/model.rb +5 -5
  18. data/lib/hammer_cli_foreman/operating_system.rb +10 -10
  19. data/lib/hammer_cli_foreman/option_sources.rb +0 -1
  20. data/lib/hammer_cli_foreman/option_sources/id_params.rb +27 -10
  21. data/lib/hammer_cli_foreman/option_sources/ids_params.rb +25 -6
  22. data/lib/hammer_cli_foreman/organization.rb +0 -6
  23. data/lib/hammer_cli_foreman/references.rb +0 -16
  24. data/lib/hammer_cli_foreman/settings.rb +3 -3
  25. data/lib/hammer_cli_foreman/smart_proxy.rb +0 -52
  26. data/lib/hammer_cli_foreman/usergroup.rb +5 -5
  27. data/lib/hammer_cli_foreman/version.rb +1 -1
  28. data/lib/minitest/coverage_reporter.rb +1 -1
  29. data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  30. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  31. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  32. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  33. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  34. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  35. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  36. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  37. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  38. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  39. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  40. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  41. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  42. data/test/functional/architecture_test.rb +6 -4
  43. data/test/functional/bookmark_test.rb +3 -1
  44. data/test/functional/compute_profile_test.rb +3 -1
  45. data/test/functional/host_test.rb +0 -1
  46. data/test/functional/hostgroup/create_test.rb +0 -117
  47. data/test/functional/hostgroup/update_test.rb +0 -79
  48. data/test/functional/location_test.rb +0 -3
  49. data/test/functional/mail_notification_test.rb +3 -1
  50. data/test/functional/model_test.rb +3 -1
  51. data/test/functional/operating_system_test.rb +3 -1
  52. data/test/functional/settings_test.rb +4 -4
  53. data/test/functional/template_test.rb +4 -37
  54. data/test/functional/usergroup_test.rb +3 -1
  55. data/test/unit/apipie_resource_mock.rb +1 -39
  56. data/test/unit/architecture_test.rb +10 -10
  57. data/test/unit/bookmark_test.rb +10 -14
  58. data/test/unit/compute_profile_test.rb +10 -10
  59. data/test/unit/helpers/command.rb +0 -8
  60. data/test/unit/host_test.rb +14 -61
  61. data/test/unit/hostgroup_test.rb +7 -26
  62. data/test/unit/id_resolver_test.rb +0 -28
  63. data/test/unit/mail_notification_test.rb +4 -4
  64. data/test/unit/model_test.rb +47 -47
  65. data/test/unit/operating_system_test.rb +10 -16
  66. data/test/unit/option_sources/id_params_test.rb +9 -0
  67. data/test/unit/option_sources/ids_params_test.rb +9 -0
  68. data/test/unit/settings_test.rb +4 -4
  69. data/test/unit/smart_proxy_test.rb +0 -12
  70. data/test/unit/usergroup_test.rb +10 -10
  71. metadata +64 -85
  72. data/lib/hammer_cli_foreman/command_extensions/puppet_environment.rb +0 -29
  73. data/lib/hammer_cli_foreman/command_extensions/puppet_environments.rb +0 -29
  74. data/lib/hammer_cli_foreman/config_group.rb +0 -45
  75. data/lib/hammer_cli_foreman/option_sources/puppet_environment_params.rb +0 -59
  76. data/lib/hammer_cli_foreman/puppet_class.rb +0 -61
  77. data/lib/hammer_cli_foreman/puppet_environment.rb +0 -65
  78. data/lib/hammer_cli_foreman/smart_class_parameter.rb +0 -189
  79. data/test/functional/config_group_test.rb +0 -50
  80. data/test/functional/proxy_test.rb +0 -86
  81. data/test/functional/smart_class_parameter_test.rb +0 -97
  82. data/test/unit/config_group_test.rb +0 -82
  83. data/test/unit/puppet_class_test.rb +0 -72
  84. data/test/unit/puppet_environment_test.rb +0 -114
  85. data/test/unit/smart_class_parameter_test.rb +0 -113
@@ -1,61 +0,0 @@
1
- require 'hammer_cli_foreman/smart_class_parameter'
2
-
3
- module HammerCLIForeman
4
-
5
- class PuppetClass < HammerCLIForeman::Command
6
-
7
- resource :puppetclasses
8
-
9
- class ListCommand < HammerCLIForeman::ListCommand
10
-
11
- output do
12
- field :id, _("Id")
13
- field :name, _("Name")
14
- end
15
-
16
- def send_request
17
- self.class.unhash_classes(super)
18
- end
19
-
20
- def self.unhash_classes(classes)
21
- clss = classes.first.inject([]) { |list, (pp_module, pp_module_classes)| list + pp_module_classes }
22
-
23
- HammerCLI::Output::RecordCollection.new(clss, :meta => classes.meta)
24
-
25
- end
26
-
27
- build_options
28
-
29
- extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironment.new)
30
- end
31
-
32
-
33
- class InfoCommand < HammerCLIForeman::InfoCommand
34
- output ListCommand.output_definition do
35
- collection :smart_class_parameters, _("Smart class parameters"), :numbered => false do
36
- custom_field Fields::Reference, :name_key => :parameter
37
- end
38
- HammerCLIForeman::References.hostgroups(self)
39
- HammerCLIForeman::References.environments(self)
40
- HammerCLIForeman::References.parameters(self)
41
- end
42
-
43
- build_options
44
-
45
- extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironment.new)
46
- end
47
-
48
-
49
- class SCParamsCommand < HammerCLIForeman::SmartClassParametersBriefList
50
- build_options_for :puppetclasses
51
-
52
- def validate_options
53
- super
54
- validator.any(:option_puppetclass_name, :option_puppetclass_id).required
55
- end
56
- end
57
-
58
- autoload_subcommands
59
- end
60
-
61
- end
@@ -1,65 +0,0 @@
1
- require 'hammer_cli'
2
- require 'hammer_cli_foreman/smart_class_parameter'
3
-
4
- module HammerCLIForeman
5
-
6
- class PuppetEnvironment < HammerCLIForeman::Command
7
-
8
- resource :environments
9
-
10
- class ListCommand < HammerCLIForeman::ListCommand
11
-
12
- output do
13
- field :id, _("Id")
14
- field :name, _("Name")
15
- end
16
-
17
- build_options
18
- end
19
-
20
-
21
- class InfoCommand < HammerCLIForeman::InfoCommand
22
- output ListCommand.output_definition do
23
- HammerCLIForeman::References.puppetclasses(self)
24
- HammerCLIForeman::References.taxonomies(self)
25
- HammerCLIForeman::References.timestamps(self)
26
- end
27
-
28
- build_options
29
- end
30
-
31
-
32
- class CreateCommand < HammerCLIForeman::CreateCommand
33
- success_message _("Environment created.")
34
- failure_message _("Could not create the environment")
35
-
36
- build_options
37
- end
38
-
39
-
40
- class UpdateCommand < HammerCLIForeman::UpdateCommand
41
- success_message _("Environment updated.")
42
- failure_message _("Could not update the environment")
43
-
44
- build_options
45
- end
46
-
47
-
48
- class DeleteCommand < HammerCLIForeman::DeleteCommand
49
- success_message _("Environment deleted.")
50
- failure_message _("Could not delete the environment")
51
-
52
- build_options
53
- end
54
-
55
- class SCParamsCommand < HammerCLIForeman::SmartClassParametersList
56
- build_options_for :environments
57
-
58
- extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironment.new)
59
- end
60
-
61
-
62
- autoload_subcommands
63
- end
64
-
65
- end
@@ -1,189 +0,0 @@
1
- module HammerCLIForeman
2
-
3
- class SmartClassParametersBriefList < HammerCLIForeman::ListCommand
4
- resource :smart_class_parameters, :index
5
- command_name 'sc-params'
6
-
7
- output do
8
- field :id, _("Id")
9
-
10
- field :parameter, _("Parameter")
11
- field :default_value, _("Default Value")
12
- field :override, _("Override")
13
- end
14
-
15
- def send_request
16
- res = super
17
- # FIXME: API returns doubled records, probably just if filtered by puppetclasses
18
- # it seems group by environment is missing
19
- # having the uniq to fix that
20
- HammerCLI::Output::RecordCollection.new(res.uniq, :meta => res.meta)
21
- end
22
-
23
- def self.build_options_for(resource)
24
- options = {}
25
- options[:without] = [:host_id, :puppetclass_id, :environment_id, :hostgroup_id]
26
- options[:expand] = {}
27
- options[:expand][:except] = ([:hosts, :puppetclasses, :environments, :hostgroups] - [resource])
28
- build_options(options)
29
- end
30
- end
31
-
32
- class SmartClassParametersList < SmartClassParametersBriefList
33
-
34
- output do
35
- field :puppetclass_name, _("Puppet class")
36
- field :puppetclass_id, _("Class Id"), Fields::Id
37
- end
38
- end
39
-
40
- class SmartClassParameter < HammerCLIForeman::Command
41
-
42
- resource :smart_class_parameters
43
-
44
- class ListCommand < HammerCLIForeman::ListCommand
45
-
46
- output SmartClassParametersList.output_definition
47
-
48
- def extend_data(res)
49
- res['parameter_type'] ||= 'string'
50
- res
51
- end
52
-
53
- build_options
54
-
55
- extend_with(HammerCLIForeman::CommandExtensions::PuppetEnvironment.new)
56
- end
57
-
58
- class InfoCommand < HammerCLIForeman::InfoCommand
59
-
60
- output ListCommand.output_definition do
61
- field :description, _("Description")
62
- field :parameter_type, _("Type")
63
- field :hidden_value?, _("Hidden Value?")
64
- field :omit, _("Omit"), Fields::Boolean
65
- field :required, _("Required")
66
-
67
- label _("Validator") do
68
- field :validator_type, _("Type")
69
- field :validator_rule, _("Rule")
70
- end
71
- label _("Override values") do
72
- field :merge_overrides, _("Merge overrides"), Fields::Boolean
73
- field :merge_default, _("Merge default value"), Fields::Boolean
74
- field :avoid_duplicates, _("Avoid duplicates"), Fields::Boolean
75
- field :override_value_order, _("Order"), Fields::LongText
76
-
77
- collection :override_values, _("Values") do
78
- field :id, _('Id')
79
- field :match, _('Match')
80
- field :value, _('Value')
81
- field :omit, _('Omit'), Fields::Boolean
82
- end
83
- end
84
- HammerCLIForeman::References.environments(self)
85
- HammerCLIForeman::References.timestamps(self)
86
- end
87
-
88
- def extend_data(res)
89
- res['parameter_type'] ||= 'string'
90
- res['omit'] ||= false
91
- res
92
- end
93
-
94
- build_options do |options|
95
- options.expand.including(:puppetclasses)
96
- end
97
-
98
- validate_options do
99
- if option(:option_name).exist?
100
- any(:option_puppetclass_name, :option_puppetclass_id).required
101
- end
102
- end
103
- end
104
-
105
- class UpdateCommand < HammerCLIForeman::UpdateCommand
106
-
107
- success_message _("Parameter updated.")
108
- failure_message _("Could not update the parameter")
109
-
110
- option '--default-value', 'VALUE', _('Value to use when there is no match')
111
-
112
- build_options do |options|
113
- options.expand.including(:puppetclasses)
114
- options.without(:parameter_type, :validator_type, :override, :required, :override_value_order)
115
- end
116
-
117
- option "--override", "OVERRIDE", _("Override this parameter"),
118
- :format => HammerCLI::Options::Normalizers::Bool.new
119
- option "--required", "REQUIRED", _("This parameter is required"),
120
- :format => HammerCLI::Options::Normalizers::Bool.new
121
- option "--parameter-type", "PARAMETER_TYPE", _("Type of the parameter"),
122
- :format => HammerCLI::Options::Normalizers::Enum.new(
123
- ['string', 'boolean', 'integer', 'real', 'array', 'hash', 'yaml', 'json'])
124
- option "--validator-type", "VALIDATOR_TYPE", _("Type of the validator"),
125
- :format => HammerCLI::Options::Normalizers::Enum.new(['regexp', 'list', ''])
126
- option "--override-value-order", "OVERRIDE_VALUE_ORDER", _("The order in which values are resolved"),
127
- :format => HammerCLI::Options::Normalizers::List.new
128
-
129
- validate_options do
130
- if option(:option_name).exist?
131
- any(:option_puppetclass_name, :option_puppetclass_id).required
132
- end
133
- end
134
-
135
- def request_params
136
- params = super
137
- override_order = params['smart_class_parameter']['override_value_order']
138
- params['smart_class_parameter']['override_value_order'] = override_order.join("\n") if override_order.is_a?(Array)
139
- params
140
- end
141
- end
142
-
143
- class AddMatcherCommand < HammerCLIForeman::CreateCommand
144
- resource :override_values
145
- command_name 'add-matcher'
146
-
147
- option '--value', 'VALUE', _('Override value, required if omit is false')
148
-
149
- success_message _("Override value created.")
150
- failure_message _("Could not create the override value")
151
-
152
- build_options do |options|
153
- options.expand.including(:puppetclasses)
154
- end
155
-
156
- validate_options do
157
- if option(:option_omit).value
158
- option(:option_value).rejected(:msg => _('Cannot use --value when --omit is true.'))
159
- end
160
-
161
- if option(:option_smart_class_parameter_name).exist?
162
- any(:option_puppetclass_name, :option_puppetclass_id).required
163
- end
164
- end
165
- end
166
-
167
- class RemoveMatcherCommand < HammerCLIForeman::DeleteCommand
168
- resource :override_values
169
- command_name 'remove-matcher'
170
-
171
- success_message _("Override value deleted.")
172
- failure_message _("Could not delete the override value")
173
-
174
- build_options do |options|
175
- options.expand.including(:puppetclasses)
176
- end
177
-
178
- validate_options do
179
- if option(:option_smart_class_parameter_name).exist?
180
- any(:option_puppetclass_name, :option_puppetclass_id).required
181
- end
182
- end
183
- end
184
-
185
- autoload_subcommands
186
-
187
- end
188
-
189
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require File.join(File.dirname(__FILE__), 'test_helper')
4
-
5
- describe 'config_group' do
6
- describe 'list' do
7
- before do
8
- @cmd = %w[config-group list]
9
- @config_groups = [{
10
- id: 1,
11
- name: 'config-group-test',
12
- }]
13
- end
14
-
15
- it 'should return a list of config groups' do
16
- api_expects(:config_groups, :index, 'List config groups').returns(@config_groups)
17
-
18
- output = IndexMatcher.new([
19
- %w[ID NAME],
20
- %w[1 config-group-test]
21
- ])
22
- expected_result = success_result(output)
23
-
24
- result = run_cmd(@cmd)
25
- assert_cmd(expected_result, result)
26
- end
27
-
28
- it 'should run list command with defaults' do
29
- providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.1')) }
30
- defaults = HammerCLI::Defaults.new(
31
- {
32
- organization_id: {
33
- provider: 'foreman'
34
- },
35
- location_id: {
36
- provider: 'foreman'
37
- }
38
- }
39
- )
40
- defaults.stubs(:write_to_file).returns(true)
41
- defaults.stubs(:providers).returns(providers)
42
- api_expects(:config_groups, :index, 'List config groups').returns(@config_groups)
43
-
44
- result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
45
- _(result.exit_code).must_equal HammerCLI::EX_OK
46
- end
47
- end
48
- end
49
-
50
-
@@ -1,86 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
2
-
3
- describe 'proxy' do
4
- describe 'import-classes' do
5
- let(:cmd) { ['proxy', 'import-classes'] }
6
- let(:params) { ['--id=83'] }
7
- let(:report) do
8
- {
9
- 'message' => 'Successfully updated environment and puppetclasses from the on-disk puppet installation',
10
- 'environments_with_new_puppetclasses' => 2,
11
- 'environments_updated_puppetclasses' => 0,
12
- 'environments_obsolete' => 0,
13
- 'environments_ignored' => 0,
14
- 'results' => [{
15
- 'name' => 'development',
16
- 'actions' => [ 'new', 'update' ],
17
- 'new_puppetclasses' => [
18
- 'motd',
19
- 'hammer'
20
- ],
21
- 'updated_puppetclasses' => [
22
- 'stdlib',
23
- 'vim'
24
- ]
25
- },{
26
- 'name' => 'production',
27
- 'actions' => [ 'obsolete', 'ignore' ],
28
- 'obsolete_puppetclasses' => [
29
- 'apache'
30
- ],
31
- 'ignored_puppetclasses' => [
32
- 'hammer'
33
- ]
34
- }]
35
- }
36
- end
37
- let(:no_change_report) do
38
- {
39
- 'message' => 'No changes to your environments detected'
40
- }
41
- end
42
-
43
- it 'prints detailed report' do
44
- api_expects(:smart_proxies, :import_puppetclasses, 'Import classes')
45
- .with_params('id' => '83')
46
- .returns(report)
47
-
48
- output = OutputMatcher.new([
49
- 'Result:',
50
- ' Successfully updated environment and puppetclasses from the on-disk puppet installation',
51
- 'Changed environments:',
52
- ' 1) development',
53
- ' New classes:',
54
- ' motd',
55
- ' hammer',
56
- ' Updated classes:',
57
- ' stdlib',
58
- ' vim',
59
- ' 2) production',
60
- ' Removed classes:',
61
- ' apache',
62
- ' Ignored classes:',
63
- ' hammer'
64
- ])
65
- expected_result = success_result(output)
66
-
67
- result = run_cmd(cmd + params)
68
- assert_cmd(expected_result, result)
69
- end
70
-
71
- it 'prints a message when nothig has changed' do
72
- api_expects(:smart_proxies, :import_puppetclasses, 'Import classes')
73
- .with_params('id' => '83')
74
- .returns(no_change_report)
75
-
76
- output = OutputMatcher.new([
77
- 'Result:',
78
- ' No changes to your environments detected'
79
- ])
80
- expected_result = success_result(output)
81
-
82
- result = run_cmd(cmd + params)
83
- assert_cmd(expected_result, result)
84
- end
85
- end
86
- end