hammer_cli_foreman 0.1.4 → 0.2.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/config/foreman.yml +16 -0
  3. data/doc/host_create.md +102 -54
  4. data/doc/release_notes.md +20 -0
  5. data/lib/hammer_cli_foreman.rb +8 -0
  6. data/lib/hammer_cli_foreman/commands.rb +33 -9
  7. data/lib/hammer_cli_foreman/compute_resource.rb +13 -2
  8. data/lib/hammer_cli_foreman/domain.rb +24 -1
  9. data/lib/hammer_cli_foreman/environment.rb +1 -2
  10. data/lib/hammer_cli_foreman/host.rb +131 -73
  11. data/lib/hammer_cli_foreman/hostgroup.rb +18 -8
  12. data/lib/hammer_cli_foreman/i18n.rb +2 -6
  13. data/lib/hammer_cli_foreman/id_resolver.rb +41 -6
  14. data/lib/hammer_cli_foreman/interface.rb +165 -0
  15. data/lib/hammer_cli_foreman/output/fields.rb +7 -0
  16. data/lib/hammer_cli_foreman/output/formatters.rb +3 -5
  17. data/lib/hammer_cli_foreman/puppet_class.rb +16 -2
  18. data/lib/hammer_cli_foreman/settings.rb +37 -0
  19. data/lib/hammer_cli_foreman/smart_class_parameter.rb +75 -11
  20. data/lib/hammer_cli_foreman/smart_variable.rb +146 -0
  21. data/lib/hammer_cli_foreman/user.rb +9 -3
  22. data/lib/hammer_cli_foreman/version.rb +1 -1
  23. data/locale/Makefile +9 -17
  24. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  25. data/locale/de/hammer-cli-foreman.edit.po +2403 -0
  26. data/locale/de/hammer-cli-foreman.po +302 -355
  27. data/locale/de/hammer-cli-foreman.po.time_stamp +0 -0
  28. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  29. data/locale/en/hammer-cli-foreman.edit.po +2260 -0
  30. data/locale/en/hammer-cli-foreman.po +946 -823
  31. data/locale/en/hammer-cli-foreman.po.time_stamp +0 -0
  32. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  33. data/locale/en_GB/hammer-cli-foreman.edit.po +2267 -0
  34. data/locale/en_GB/hammer-cli-foreman.po +297 -351
  35. data/locale/en_GB/hammer-cli-foreman.po.time_stamp +0 -0
  36. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  37. data/locale/es/hammer-cli-foreman.edit.po +2427 -0
  38. data/locale/es/hammer-cli-foreman.po +301 -354
  39. data/locale/es/hammer-cli-foreman.po.time_stamp +0 -0
  40. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  41. data/locale/fr/hammer-cli-foreman.edit.po +2427 -0
  42. data/locale/fr/hammer-cli-foreman.po +299 -353
  43. data/locale/fr/hammer-cli-foreman.po.time_stamp +0 -0
  44. data/locale/hammer-cli-foreman.pot +1413 -1112
  45. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  46. data/locale/it/hammer-cli-foreman.edit.po +2402 -0
  47. data/locale/it/hammer-cli-foreman.po +299 -353
  48. data/locale/it/hammer-cli-foreman.po.time_stamp +0 -0
  49. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  50. data/locale/ja/hammer-cli-foreman.edit.po +2401 -0
  51. data/locale/ja/hammer-cli-foreman.po +338 -391
  52. data/locale/ja/hammer-cli-foreman.po.time_stamp +0 -0
  53. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  54. data/locale/ko/hammer-cli-foreman.edit.po +2401 -0
  55. data/locale/ko/hammer-cli-foreman.po +299 -353
  56. data/locale/ko/hammer-cli-foreman.po.time_stamp +0 -0
  57. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  58. data/locale/pt_BR/hammer-cli-foreman.edit.po +2417 -0
  59. data/locale/pt_BR/hammer-cli-foreman.po +312 -365
  60. data/locale/pt_BR/hammer-cli-foreman.po.time_stamp +0 -0
  61. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  62. data/locale/ru/hammer-cli-foreman.edit.po +2401 -0
  63. data/locale/ru/hammer-cli-foreman.po +300 -354
  64. data/locale/ru/hammer-cli-foreman.po.time_stamp +0 -0
  65. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  66. data/locale/zh_CN/hammer-cli-foreman.edit.po +2400 -0
  67. data/locale/zh_CN/hammer-cli-foreman.po +299 -353
  68. data/locale/zh_CN/hammer-cli-foreman.po.time_stamp +0 -0
  69. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  70. data/locale/zh_TW/hammer-cli-foreman.edit.po +2400 -0
  71. data/locale/zh_TW/hammer-cli-foreman.po +299 -353
  72. data/locale/zh_TW/hammer-cli-foreman.po.time_stamp +0 -0
  73. data/test/unit/apipie_resource_mock.rb +7 -0
  74. data/test/unit/commands_test.rb +42 -0
  75. data/test/unit/data/1.7/foreman_api.json +1 -0
  76. data/test/unit/dependency_resolver_test.rb +4 -2
  77. data/test/unit/environment_test.rb +2 -2
  78. data/test/unit/host_test.rb +50 -27
  79. data/test/unit/hostgroup_test.rb +19 -3
  80. data/test/unit/media_test.rb +2 -2
  81. data/test/unit/puppet_class_test.rb +17 -2
  82. data/test/unit/smart_class_parameter_test.rb +26 -2
  83. data/test/unit/smart_variable_test.rb +134 -0
  84. data/test/unit/test_helper.rb +1 -1
  85. metadata +36 -4
@@ -0,0 +1,165 @@
1
+ module HammerCLIForeman
2
+
3
+ class Interface < HammerCLIForeman::Command
4
+
5
+ resource :interfaces
6
+ desc _("View and manage host's network interfaces")
7
+
8
+ def self.format_type(nic)
9
+ flags = []
10
+ flags << _('primary') if nic['primary']
11
+ flags << _('provision') if nic['provision']
12
+
13
+ type = nic['type']
14
+ if !flags.empty?
15
+ type += " (#{flags.join(', ')})"
16
+ end
17
+ type
18
+ end
19
+
20
+ class ListCommand < HammerCLIForeman::ListCommand
21
+
22
+ output do
23
+ field :id, _("Id")
24
+ field :identifier, _("Identifier")
25
+ field :_type , _("Type")
26
+ field :mac , _("MAC address")
27
+ field :ip , _("IP address")
28
+ field :name , _("DNS name")
29
+ end
30
+
31
+ def extend_data(nic)
32
+ nic['_type'] = HammerCLIForeman::Interface.format_type(nic)
33
+ nic
34
+ end
35
+
36
+ build_options
37
+ end
38
+
39
+
40
+ class InfoCommand < HammerCLIForeman::InfoCommand
41
+
42
+ output do
43
+ field :id, _("Id")
44
+ field :identifier, _("Identifier")
45
+ field :type , _("Type")
46
+ field :mac , _("MAC address")
47
+ field :ip , _("IP address")
48
+ field :name , _("DNS name")
49
+ field nil, _("Subnet"), Fields::SingleReference, :key => :subnet
50
+ field nil, _("Domain"), Fields::SingleReference, :key => :domain
51
+ field :managed, _("Managed"), Fields::Boolean
52
+ field :primary, _("Primary"), Fields::Boolean
53
+ field :provision, _("Provision"), Fields::Boolean
54
+ field :virtual, _("Virtual"), Fields::Boolean
55
+ field :tag, _("Tag"), nil, :hide_blank => true
56
+ field :attached_to, _("Attached to"), nil, :hide_blank => true
57
+
58
+ label _("BMC"), :hide_blank => true do
59
+ field :username, _("Username"), nil, :hide_blank => true
60
+ field :provider, _("Provider"), nil, :hide_blank => true
61
+ end
62
+
63
+ label _("Bond"), :hide_blank => true do
64
+ field :mode, _("Mode"), nil, :hide_blank => true
65
+ field :attached_devices, _("Attached devices"), nil, :hide_blank => true
66
+ field :bond_options, _("Bond options"), nil, :hide_blank => true
67
+ end
68
+ end
69
+
70
+ build_options
71
+ end
72
+
73
+
74
+ module InterfaceUpdate
75
+
76
+ def self.included(base)
77
+ base.option "--primary", :flag, _("Should this interface be used for constructing the FQDN of the host? Each managed hosts needs to have one primary interface.")
78
+ base.option "--provision", :flag, _("Should this interface be used for TFTP of PXELinux (or SSH for image-based hosts)? Each managed hosts needs to have one provision interface.")
79
+ end
80
+
81
+ def get_interfaces(host_id)
82
+ HammerCLIForeman.foreman_resource!(:interfaces).call(:index, {'host_id' => host_id}, request_headers, request_options)
83
+ end
84
+
85
+ def mandatory_interfaces(host_id, nic_id)
86
+ mandatory_options = []
87
+ get_interfaces(host_id)['results'].each do |nic|
88
+ if (nic['primary'] || nic['provision']) && nic['id'] != nic_id
89
+ mandatory_options << {
90
+ 'id' => nic['id'],
91
+ 'primary' => nic['primary'],
92
+ 'provision' => nic['provision']
93
+ }
94
+ end
95
+ end
96
+ mandatory_options
97
+ end
98
+
99
+ def reset_flag(interfaces_params, flag)
100
+ interfaces_params.each do |nic|
101
+ nic[flag] = false if nic[flag]
102
+ end
103
+ end
104
+
105
+ def send_request
106
+ nic_params = request_params
107
+ interface = nic_params['interface']
108
+
109
+ interface['id'] = nic_params['id'].to_i if nic_params['id']
110
+ interface['compute_attributes'] = option_compute_attributes
111
+
112
+ host_params = {}
113
+ host_params['id'] = nic_params['host_id']
114
+ host_params['host'] = {}
115
+ host_params['host']['interfaces_attributes'] = mandatory_interfaces(nic_params['host_id'], interface['id'])
116
+
117
+ reset_flag(host_params['host']['interfaces_attributes'], 'primary') if option_primary?
118
+ reset_flag(host_params['host']['interfaces_attributes'], 'provision') if option_provision?
119
+
120
+ host_params['host']['interfaces_attributes'] += [interface]
121
+
122
+ HammerCLIForeman.foreman_resource!(:hosts).call(:update, host_params, request_headers, request_options)
123
+ end
124
+ end
125
+
126
+
127
+ class CreateCommand < HammerCLIForeman::CreateCommand
128
+ success_message _("Interface created")
129
+ failure_message _("Could not create the interface")
130
+
131
+ option "--compute-attributes", "COMPUTE_ATTRS", _("Compute resource specific attributes."),
132
+ :format => HammerCLI::Options::Normalizers::KeyValueList.new
133
+
134
+ include InterfaceUpdate
135
+
136
+ build_options :without => [:primary, :provision]
137
+ end
138
+
139
+
140
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
141
+ success_message _("Interface updated")
142
+ failure_message _("Could not update the interface")
143
+
144
+ option "--compute-attributes", "COMPUTE_ATTRS", _("Compute resource specific attributes."),
145
+ :format => HammerCLI::Options::Normalizers::KeyValueList.new
146
+
147
+ include InterfaceUpdate
148
+
149
+ build_options :without => [:primary, :provision]
150
+ end
151
+
152
+
153
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
154
+ success_message _("Interface deleted")
155
+ failure_message _("Could not delete the interface")
156
+
157
+ build_options
158
+ end
159
+
160
+ autoload_subcommands
161
+ end
162
+
163
+ end
164
+
165
+
@@ -3,6 +3,13 @@ require 'hammer_cli'
3
3
  module Fields
4
4
 
5
5
  class SingleReference < Field
6
+
7
+ def display?(value)
8
+ id_key = "#{parameters[:key]}_id"
9
+ name_key = "#{parameters[:key]}_name"
10
+
11
+ (value[name_key.to_sym] || value[name_key]) && (value[id_key.to_sym] || value[id_key])
12
+ end
6
13
  end
7
14
 
8
15
  class Reference < Field
@@ -20,11 +20,9 @@ module HammerCLIForeman::Output
20
20
 
21
21
  context = field_params[:context] || {}
22
22
 
23
- if context[:show_ids]
24
- "#{name} (id: #{id})" if id && name
25
- else
26
- "#{name}" if name
27
- end
23
+ out = "#{name}"
24
+ out += " (id: #{id})" if context[:show_ids] && id
25
+ out
28
26
  end
29
27
 
30
28
  end
@@ -1,4 +1,5 @@
1
1
  require 'hammer_cli_foreman/smart_class_parameter'
2
+ require 'hammer_cli_foreman/smart_variable'
2
3
 
3
4
  module HammerCLIForeman
4
5
 
@@ -47,8 +48,21 @@ module HammerCLIForeman
47
48
 
48
49
 
49
50
  class SCParamsCommand < HammerCLIForeman::SmartClassParametersBriefList
50
- parent_resource :puppetclasses
51
- build_options
51
+ build_options_for :puppetclasses
52
+
53
+ def validate_options
54
+ super
55
+ validator.any(:option_puppetclass_name, :option_puppetclass_id).required
56
+ end
57
+ end
58
+
59
+ class SmartVariablesCommand < HammerCLIForeman::SmartVariablesBriefList
60
+ build_options_for :puppetclasses
61
+
62
+ def validate_options
63
+ super
64
+ validator.any(:option_puppetclass_name, :option_puppetclass_id).required
65
+ end
52
66
  end
53
67
 
54
68
 
@@ -0,0 +1,37 @@
1
+
2
+ module HammerCLIForeman
3
+
4
+ class Settings < HammerCLIForeman::Command
5
+
6
+ resource :settings
7
+
8
+ class ListCommand < HammerCLIForeman::ListCommand
9
+
10
+ output do
11
+ field :id, _('Id'), Fields::Id
12
+ field :name, _('Name')
13
+ field :value, _('Value')
14
+ field :description, _('Description')
15
+ end
16
+
17
+ def extend_data(data)
18
+ data['value'] = data['value'].to_s
19
+ data
20
+ end
21
+
22
+ build_options
23
+ end
24
+
25
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
26
+ command_name 'set'
27
+
28
+ success_message _("Setting [%{name}] updated to [%{value}]")
29
+ failure_message _("Could not update the setting")
30
+
31
+ build_options
32
+ end
33
+
34
+ autoload_subcommands
35
+ end
36
+
37
+ end
@@ -1,6 +1,6 @@
1
1
  module HammerCLIForeman
2
2
 
3
- class SmartClassParametersBriefList < HammerCLIForeman::AssociatedResourceListCommand
3
+ class SmartClassParametersBriefList < HammerCLIForeman::ListCommand
4
4
  resource :smart_class_parameters, :index
5
5
  command_name 'sc-params'
6
6
 
@@ -20,9 +20,12 @@ module HammerCLIForeman
20
20
  HammerCLI::Output::RecordCollection.new(res.uniq, :meta => res.meta)
21
21
  end
22
22
 
23
- def self.build_options(options={})
24
- options[:without] ||= [:host_id, :hostgroup_id, :puppetclass_id, :environment_id]
25
- super(options)
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)
26
29
  end
27
30
  end
28
31
 
@@ -44,6 +47,11 @@ module HammerCLIForeman
44
47
 
45
48
  output SmartClassParametersList.output_definition
46
49
 
50
+ def extend_data(res)
51
+ res['parameter_type'] ||= 'string'
52
+ res
53
+ end
54
+
47
55
  build_options
48
56
  end
49
57
 
@@ -59,14 +67,13 @@ module HammerCLIForeman
59
67
  field :validator_rule, _("Rule")
60
68
  end
61
69
  label _("Override values") do
70
+ field :merge_overrides, _("Merge overrides"), Fields::Boolean
71
+ field :avoid_duplicates, _("Avoid duplicates"), Fields::Boolean
62
72
  field :override_value_order, _("Order"), Fields::List
63
- field :override_values_count, _("Count")
64
- collection :override_values, "Values" do
65
- label _("Value") do
73
+ collection :override_values, _("Values") do
66
74
  field :id, _('Id')
67
75
  field :match, _('Match')
68
76
  field :value, _('Value')
69
- end
70
77
  end
71
78
  end
72
79
  HammerCLIForeman::References.environments(self)
@@ -74,11 +81,20 @@ module HammerCLIForeman
74
81
  end
75
82
 
76
83
  def extend_data(res)
77
- res['override_value_order'] = res['override_value_order'].split("\n")
84
+ res['override_value_order'] = res['override_value_order'].split(/\r?\n/)
85
+ res['parameter_type'] ||= 'string'
78
86
  res
79
87
  end
80
88
 
81
- build_options
89
+ build_options do |options|
90
+ options.expand.including(:puppetclasses)
91
+ end
92
+
93
+ validate_options do
94
+ if option(:option_name).exist?
95
+ any(:option_puppetclass_name, :option_puppetclass_id).required
96
+ end
97
+ end
82
98
  end
83
99
 
84
100
  class UpdateCommand < HammerCLIForeman::UpdateCommand
@@ -86,7 +102,10 @@ module HammerCLIForeman
86
102
  success_message _("Parameter updated")
87
103
  failure_message _("Could not update the parameter")
88
104
 
89
- build_options :without => [:parameter_type, :validator_type, :override, :required]
105
+ build_options do |options|
106
+ options.expand.including(:puppetclasses)
107
+ options.without(:parameter_type, :validator_type, :override, :required)
108
+ end
90
109
 
91
110
  option "--override", "OVERRIDE", _("Override this parameter."),
92
111
  :format => HammerCLI::Options::Normalizers::Bool.new
@@ -97,8 +116,53 @@ module HammerCLIForeman
97
116
  ['string', 'boolean', 'integer', 'real', 'array', 'hash', 'yaml', 'json'])
98
117
  option "--validator-type", "VALIDATOR_TYPE", _("Type of the validator."),
99
118
  :format => HammerCLI::Options::Normalizers::Enum.new(['regexp', 'list', ''])
119
+
120
+ validate_options do
121
+ if option(:option_name).exist?
122
+ any(:option_puppetclass_name, :option_puppetclass_id).required
123
+ end
124
+ end
125
+ end
126
+
127
+ class AddOverrideValueCommand < HammerCLIForeman::CreateCommand
128
+ resource :override_values
129
+ command_name 'add-override-value'
130
+
131
+ success_message _("Override value created")
132
+ failure_message _("Could not create the override_value")
133
+
134
+ build_options do |options|
135
+ options.without(:smart_variable_id)
136
+ options.expand.except(:smart_variables)
137
+ options.expand.including(:puppetclasses)
138
+ end
139
+
140
+ validate_options do
141
+ if option(:option_smart_class_parameter_name).exist?
142
+ any(:option_puppetclass_name, :option_puppetclass_id).required
143
+ end
144
+ end
100
145
  end
101
146
 
147
+ class RemoveOverrideValueCommand < HammerCLIForeman::DeleteCommand
148
+ resource :override_values
149
+ command_name 'remove-override-value'
150
+
151
+ success_message _("Override value deleted")
152
+ failure_message _("Could not delete the override value")
153
+
154
+ build_options do |options|
155
+ options.without(:smart_variable_id)
156
+ options.expand.except(:smart_variables)
157
+ options.expand.including(:puppetclasses)
158
+ end
159
+
160
+ validate_options do
161
+ if option(:option_smart_class_parameter_name).exist?
162
+ any(:option_puppetclass_name, :option_puppetclass_id).required
163
+ end
164
+ end
165
+ end
102
166
 
103
167
  autoload_subcommands
104
168
 
@@ -0,0 +1,146 @@
1
+ module HammerCLIForeman
2
+
3
+ class SmartVariablesBriefList < HammerCLIForeman::ListCommand
4
+ resource :smart_variables, :index
5
+ command_name 'smart-variables'
6
+
7
+ output do
8
+ field :id, _("Id")
9
+
10
+ field :variable, _("Name")
11
+ field :default_value, _("Default Value")
12
+ field :parameter_type, _("Type")
13
+ end
14
+
15
+ def self.build_options_for(resource)
16
+ options = {}
17
+ options[:without] = [:host_id, :puppetclass_id, :hostgroup_id]
18
+ options[:expand] = {}
19
+ options[:expand][:except] = ([:hosts, :puppetclasses, :hostgroups] - [resource])
20
+ build_options(options)
21
+ end
22
+ end
23
+
24
+ class SmartVariablesList < SmartVariablesBriefList
25
+
26
+ output do
27
+ field :puppetclass_name, _("Puppet class")
28
+ field :puppetclass_id, _("Class Id"), Fields::Id
29
+ end
30
+ end
31
+
32
+ class SmartVariable < HammerCLIForeman::Command
33
+
34
+ resource :smart_variables
35
+
36
+ class ListCommand < HammerCLIForeman::ListCommand
37
+
38
+ output SmartVariablesList.output_definition
39
+
40
+ def extend_data(res)
41
+ res['parameter_type'] ||= 'string'
42
+ res
43
+ end
44
+
45
+ build_options
46
+ end
47
+
48
+ class InfoCommand < HammerCLIForeman::InfoCommand
49
+
50
+ output ListCommand.output_definition do
51
+ field :description, _("Description")
52
+
53
+ label _("Validator") do
54
+ field :validator_type, _("Type")
55
+ field :validator_rule, _("Rule")
56
+ end
57
+ label _("Override values") do
58
+ field :merge_overrides, _("Merge overrides"), Fields::Boolean
59
+ field :avoid_duplicates, _("Avoid duplicates"), Fields::Boolean
60
+ field :override_value_order, _("Order"), Fields::List
61
+ collection :override_values, _("Values") do
62
+ field :id, _('Id')
63
+ field :match, _('Match')
64
+ field :value, _('Value')
65
+ end
66
+ end
67
+ HammerCLIForeman::References.timestamps(self)
68
+ end
69
+
70
+ def extend_data(res)
71
+ res['override_value_order'] = res['override_value_order'].split(/\r?\n/)
72
+ res['parameter_type'] ||= 'string'
73
+ res
74
+ end
75
+
76
+ build_options
77
+ end
78
+
79
+ class CreateCommand < HammerCLIForeman::CreateCommand
80
+
81
+ success_message _("Smart variable [%{variable}] created")
82
+ failure_message _("Could not create the smart variable")
83
+
84
+ build_options :without => [:variable_type, :validator_type]
85
+
86
+ option "--variable-type", "VARIABLE_TYPE", _("Type of the variable."),
87
+ :format => HammerCLI::Options::Normalizers::Enum.new(
88
+ ['string', 'boolean', 'integer', 'real', 'array', 'hash', 'yaml', 'json'])
89
+ option "--validator-type", "VALIDATOR_TYPE", _("Type of the validator."),
90
+ :format => HammerCLI::Options::Normalizers::Enum.new(['regexp', 'list', ''])
91
+ end
92
+
93
+ class UpdateCommand < HammerCLIForeman::UpdateCommand
94
+
95
+ success_message _("Smart variable [%{variable}] updated")
96
+ failure_message _("Could not update the smart variable")
97
+
98
+ build_options :without => [:variable_type, :validator_type]
99
+
100
+ option "--variable-type", "VARIABLE_TYPE", _("Type of the variable."),
101
+ :format => HammerCLI::Options::Normalizers::Enum.new(
102
+ ['string', 'boolean', 'integer', 'real', 'array', 'hash', 'yaml', 'json'])
103
+ option "--validator-type", "VALIDATOR_TYPE", _("Type of the validator."),
104
+ :format => HammerCLI::Options::Normalizers::Enum.new(['regexp', 'list', ''])
105
+ end
106
+
107
+
108
+ class DeleteCommand < HammerCLIForeman::DeleteCommand
109
+
110
+ success_message _("Smart variable [%{variable}] deleted")
111
+ failure_message _("Could not delete the smart variable")
112
+
113
+ build_options
114
+ end
115
+
116
+
117
+ class AddOverrideValueCommand < HammerCLIForeman::CreateCommand
118
+ resource :override_values
119
+ command_name 'add-override-value'
120
+
121
+ success_message _("Override value created")
122
+ failure_message _("Could not create the override_value")
123
+
124
+ build_options do |options|
125
+ options.without(:smart_class_parameter_id)
126
+ options.expand.except(:smart_class_parameters)
127
+ end
128
+ end
129
+
130
+ class RemoveOverrideValueCommand < HammerCLIForeman::DeleteCommand
131
+ resource :override_values
132
+ command_name 'remove-override-value'
133
+
134
+ success_message _("Override value deleted")
135
+ failure_message _("Could not delete the override value")
136
+
137
+ build_options do |options|
138
+ options.without(:smart_class_parameter_id)
139
+ options.expand.except(:smart_class_parameters)
140
+ end
141
+ end
142
+
143
+ autoload_subcommands
144
+
145
+ end
146
+ end