hammer_cli_foreman 0.1.3 → 0.1.4
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.
Potentially problematic release.
This version of hammer_cli_foreman might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/doc/release_notes.md +18 -0
- data/lib/hammer_cli_foreman.rb +4 -0
- data/lib/hammer_cli_foreman/auth_source.rb +10 -0
- data/lib/hammer_cli_foreman/auth_source_ldap.rb +70 -0
- data/lib/hammer_cli_foreman/commands.rb +47 -3
- data/lib/hammer_cli_foreman/credentials.rb +35 -4
- data/lib/hammer_cli_foreman/exceptions.rb +10 -1
- data/lib/hammer_cli_foreman/external_usergroup.rb +83 -0
- data/lib/hammer_cli_foreman/host.rb +26 -22
- data/lib/hammer_cli_foreman/hostgroup.rb +12 -5
- data/lib/hammer_cli_foreman/i18n.rb +4 -0
- data/lib/hammer_cli_foreman/id_resolver.rb +81 -13
- data/lib/hammer_cli_foreman/operating_system.rb +5 -44
- data/lib/hammer_cli_foreman/option_builders.rb +64 -5
- data/lib/hammer_cli_foreman/organization.rb +3 -3
- data/lib/hammer_cli_foreman/param_filters.rb +18 -2
- data/lib/hammer_cli_foreman/references.rb +9 -1
- data/lib/hammer_cli_foreman/role.rb +2 -5
- data/lib/hammer_cli_foreman/usergroup.rb +4 -0
- data/lib/hammer_cli_foreman/version.rb +1 -1
- data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/de/hammer-cli-foreman.po +2169 -0
- data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en/hammer-cli-foreman.po +1 -1
- data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en_GB/hammer-cli-foreman.po +254 -81
- data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/es/hammer-cli-foreman.po +268 -94
- data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/fr/hammer-cli-foreman.po +258 -84
- data/locale/hammer-cli-foreman.pot +428 -321
- data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/it/hammer-cli-foreman.po +2168 -0
- data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ja/hammer-cli-foreman.po +2167 -0
- data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ko/hammer-cli-foreman.po +2167 -0
- data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/pt_BR/hammer-cli-foreman.po +2167 -0
- data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ru/hammer-cli-foreman.po +2166 -0
- data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_CN/hammer-cli-foreman.po +2166 -0
- data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_TW/hammer-cli-foreman.po +2166 -0
- data/test/unit/auth_source_ldap_test.rb +95 -0
- data/test/unit/credentials_test.rb +20 -7
- data/test/unit/data/1.6/foreman_api.json +1 -1
- data/test/unit/data/1.6/foreman_api_back.json +1 -0
- data/test/unit/data/1.6/whatever.json +1 -0
- data/test/unit/external_usergroup_test.rb +103 -0
- data/test/unit/helpers/command.rb +5 -1
- data/test/unit/host_test.rb +4 -4
- data/test/unit/hostgroup_test.rb +5 -5
- data/test/unit/media_test.rb +2 -2
- data/test/unit/operating_system_test.rb +7 -1
- data/test/unit/param_filters_test.rb +65 -0
- data/test/unit/smart_class_parameter_test.rb +1 -1
- metadata +335 -309
- data/lib/hammer_cli_foreman/smart_variables.rb +0 -111
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c465b8794294776b0e5c79cad51f615097d8731
|
4
|
+
data.tar.gz: f5fb6f3c7d7bc2a30d3aefdcff70b7f53697225d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65664eb6db87d9aad63d1b02474e5511bd45824e07f65f648e27bbc5d6092c4c7a53a56f5775cb2f19587a477e73e7771119304e74f1d588eb9d6c7ba09aa9a2
|
7
|
+
data.tar.gz: 386f80dc7f518c543c863228bdc0b73cdaa1ad1b128cbf4b72aa2413ce69d9f91e5a1c9fc1149f935d772042cdd29702d9ed9ad2bf9b3822fbd853638b6fdea6
|
data/doc/release_notes.md
CHANGED
@@ -1,6 +1,24 @@
|
|
1
1
|
Release notes
|
2
2
|
=============
|
3
3
|
|
4
|
+
### 0.1.4 (2014-12-11)
|
5
|
+
* sending puppet class ids ([#8651](http://projects.theforeman.org/issues/8651))
|
6
|
+
* setting --puppet-class-ids on host create/update throws api exception ([#8642](http://projects.theforeman.org/issues/8642))
|
7
|
+
* adding name equivalents to params in host/hostgroup create/update ([#8299](http://projects.theforeman.org/issues/8299))
|
8
|
+
* id resolution for associted resources ([#8246](http://projects.theforeman.org/issues/8246))
|
9
|
+
* added missing search option error message ([#5556](http://projects.theforeman.org/issues/5556))
|
10
|
+
* OSs referenced by title ([#8247](http://projects.theforeman.org/issues/8247))
|
11
|
+
* credentials definition moved to ApipieBindings ([#7408](http://projects.theforeman.org/issues/7408))
|
12
|
+
* listing filters for roles always fail with an exception ([#7913](http://projects.theforeman.org/issues/7913))
|
13
|
+
* api for operating systems now uses field 'title' ([#7917](http://projects.theforeman.org/issues/7917))
|
14
|
+
* i18n - add zh_CN language
|
15
|
+
* i18n - add de, it, pt_BR, zh_TW, ru, ja, ko languages
|
16
|
+
* external user groups CLI ([#6879](http://projects.theforeman.org/issues/6879))
|
17
|
+
* moved LDAP auth sources to separate command
|
18
|
+
* adds command to manage ldap auth sources ([#2924](http://projects.theforeman.org/issues/2924))
|
19
|
+
* avoid locale domain name conflict ([#7262](http://projects.theforeman.org/issues/7262))
|
20
|
+
|
21
|
+
|
4
22
|
### 0.1.3 (2014-08-20)
|
5
23
|
* Update foreman.yml
|
6
24
|
* Update the zanata.xml file to push to de-DE and es-ES ([#7112](http://projects.theforeman.org/issues/7112))
|
data/lib/hammer_cli_foreman.rb
CHANGED
@@ -35,6 +35,10 @@ module HammerCLIForeman
|
|
35
35
|
'HammerCLIForeman::Architecture', 'hammer_cli_foreman/architecture'
|
36
36
|
)
|
37
37
|
|
38
|
+
HammerCLI::MainCommand.lazy_subcommand('auth-source', _("Manipulate auth sources."),
|
39
|
+
'HammerCLIForeman::AuthSource', 'hammer_cli_foreman/auth_source'
|
40
|
+
)
|
41
|
+
|
38
42
|
HammerCLI::MainCommand.lazy_subcommand('compute-resource', _("Manipulate compute resources."),
|
39
43
|
'HammerCLIForeman::ComputeResource', 'hammer_cli_foreman/compute_resource'
|
40
44
|
)
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module HammerCLIForeman
|
2
|
+
|
3
|
+
class AuthSourceLdap < HammerCLIForeman::Command
|
4
|
+
|
5
|
+
resource :auth_source_ldaps
|
6
|
+
command_name 'ldap'
|
7
|
+
desc _("Manage LDAP auth sources.")
|
8
|
+
|
9
|
+
|
10
|
+
class ListCommand < HammerCLIForeman::ListCommand
|
11
|
+
|
12
|
+
output do
|
13
|
+
field :id , _("Id")
|
14
|
+
field :name , _("Name")
|
15
|
+
field :tls , _('LDAPS?')
|
16
|
+
field :port , _('Port')
|
17
|
+
field :type , _("Server Type")
|
18
|
+
end
|
19
|
+
|
20
|
+
build_options
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
class InfoCommand < HammerCLIForeman::InfoCommand
|
25
|
+
|
26
|
+
output ListCommand.output_definition do
|
27
|
+
field :account , _('Account Username')
|
28
|
+
field :base_dn , _('Base DN')
|
29
|
+
field :ldap_filter , _('LDAP filter')
|
30
|
+
field :onthefly_register , _('Automatically Create Accounts?')
|
31
|
+
field :attr_login , _('Login Name Attribute')
|
32
|
+
field :attr_firstname , _('First Name Attribute')
|
33
|
+
field :attr_lastname , _('Last Name Attribute')
|
34
|
+
field :attr_mail , _('Email Address Attribute')
|
35
|
+
field :attr_photo , _('Photo Attribute')
|
36
|
+
end
|
37
|
+
|
38
|
+
build_options
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
class CreateCommand < HammerCLIForeman::CreateCommand
|
43
|
+
success_message _("Auth source created")
|
44
|
+
failure_message _("Could not create the Auth Source")
|
45
|
+
|
46
|
+
build_options
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
51
|
+
success_message _("Auth source deleted")
|
52
|
+
failure_message _("Could not delete the Auth Source")
|
53
|
+
|
54
|
+
build_options
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
class UpdateCommand < HammerCLIForeman::UpdateCommand
|
59
|
+
success_message _("Auth source updated")
|
60
|
+
failure_message _("Could not update the Auth Source")
|
61
|
+
|
62
|
+
build_options
|
63
|
+
end
|
64
|
+
|
65
|
+
autoload_subcommands
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
|
@@ -3,11 +3,16 @@ module HammerCLIForeman
|
|
3
3
|
CONNECTION_NAME = 'foreman'
|
4
4
|
|
5
5
|
RESOURCE_NAME_MAPPING = {
|
6
|
-
:usergroup => :user_group
|
6
|
+
:usergroup => :user_group,
|
7
|
+
:usergroups => :user_groups,
|
8
|
+
:ptable => :partition_table,
|
9
|
+
:ptables => :partition_tables,
|
10
|
+
:puppetclass => :puppet_class,
|
11
|
+
:puppetclasses => :puppet_classes
|
7
12
|
}
|
8
13
|
|
9
14
|
def self.credentials
|
10
|
-
@credentials ||=
|
15
|
+
@credentials ||= BasicCredentials.new(
|
11
16
|
:username => (HammerCLI::Settings.get(:_params, :username) || ENV['FOREMAN_USERNAME'] || HammerCLI::Settings.get(:foreman, :username)),
|
12
17
|
:password => (HammerCLI::Settings.get(:_params, :password) || ENV['FOREMAN_PASSWORD'] || HammerCLI::Settings.get(:foreman, :password))
|
13
18
|
)
|
@@ -25,6 +30,7 @@ module HammerCLIForeman
|
|
25
30
|
config[:language] = HammerCLI::I18n.locale
|
26
31
|
config[:timeout] = HammerCLI::Settings.get(:foreman, :request_timeout)
|
27
32
|
config[:timeout] = -1 if (config[:timeout] && config[:timeout].to_i < 0)
|
33
|
+
config[:apidoc_authenticated] = false
|
28
34
|
config
|
29
35
|
end
|
30
36
|
|
@@ -54,7 +60,7 @@ module HammerCLIForeman
|
|
54
60
|
end
|
55
61
|
|
56
62
|
def self.param_to_resource(param_name)
|
57
|
-
HammerCLIForeman.foreman_resource(param_name.gsub(/_id
|
63
|
+
HammerCLIForeman.foreman_resource(param_name.gsub(/_id[s]?$/, ""), :singular => true)
|
58
64
|
end
|
59
65
|
|
60
66
|
def self.collection_to_common_format(data)
|
@@ -146,6 +152,15 @@ module HammerCLIForeman
|
|
146
152
|
end
|
147
153
|
end
|
148
154
|
|
155
|
+
def get_resource_ids(resource, options={})
|
156
|
+
opts = resolver.scoped_options(resource.singular_name, all_options)
|
157
|
+
begin
|
158
|
+
resolver.send("#{resource.singular_name}_ids", opts)
|
159
|
+
rescue HammerCLIForeman::MissingSeachOptions => e
|
160
|
+
raise e unless (options[:required] == false)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
149
164
|
def self.resolver
|
150
165
|
api = HammerCLI::Connection.get("foreman").api
|
151
166
|
HammerCLIForeman::IdResolver.new(api, HammerCLIForeman::Searchables.new)
|
@@ -162,6 +177,25 @@ module HammerCLIForeman
|
|
162
177
|
|
163
178
|
def send_request
|
164
179
|
HammerCLIForeman.record_to_common_format(super)
|
180
|
+
rescue HammerCLIForeman::MissingSeachOptions => e
|
181
|
+
|
182
|
+
switches = self.class.find_options(:referenced_resource => e.resource.singular_name).map(&:long_switch)
|
183
|
+
|
184
|
+
if switches.empty?
|
185
|
+
error_message = _("Could not find %{resource}. Some search options were missing, please see --help.")
|
186
|
+
elsif switches.length == 1
|
187
|
+
error_message = _("Could not find %{resource}, please set option %{switches}.")
|
188
|
+
else
|
189
|
+
error_message = _("Could not find %{resource}, please set one of options %{switches}.")
|
190
|
+
end
|
191
|
+
|
192
|
+
raise MissingSeachOptions.new(
|
193
|
+
error_message % {
|
194
|
+
:resource => e.resource.singular_name,
|
195
|
+
:switches => switches.join(", ")
|
196
|
+
},
|
197
|
+
e.resource
|
198
|
+
)
|
165
199
|
end
|
166
200
|
|
167
201
|
def customized_options
|
@@ -175,6 +209,16 @@ module HammerCLIForeman
|
|
175
209
|
params[HammerCLI.option_accessor_name(api_param.name)] = resource_id if resource_id
|
176
210
|
end
|
177
211
|
end
|
212
|
+
|
213
|
+
# resolve all '<resource_name>_ids' parameters if they are defined as options
|
214
|
+
IdArrayParamsFilter.new(:only_required => false).for_action(resource.action(action)).each do |api_param|
|
215
|
+
param_resource = HammerCLIForeman.param_to_resource(api_param.name)
|
216
|
+
if param_resource && respond_to?(HammerCLI.option_accessor_name("#{param_resource.singular_name}_ids"))
|
217
|
+
resource_ids = get_resource_ids(param_resource, :scoped => true, :required => api_param.required?)
|
218
|
+
params[HammerCLI.option_accessor_name(api_param.name)] = resource_ids if resource_ids
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
178
222
|
# resolve 'id' parameter if it's defined as an option
|
179
223
|
id_option_name = HammerCLI.option_accessor_name('id')
|
180
224
|
params[id_option_name] ||= get_identifier if respond_to?(id_option_name)
|
@@ -1,18 +1,36 @@
|
|
1
|
+
require 'highline/import'
|
1
2
|
module HammerCLIForeman
|
2
|
-
class
|
3
|
+
class BasicCredentials < ApipieBindings::AbstractCredentials
|
3
4
|
|
5
|
+
# Can keep username and passwords credentials and prompt for them when necessary
|
6
|
+
# @param [Hash] params
|
7
|
+
# @option params [String] :username when nil, user is prompted when the attribute is accessed
|
8
|
+
# @option params [String] :password when nil, user is prompted when the attribute is accessed
|
9
|
+
# @example use container with prompt
|
10
|
+
# c = HammerCLIForeman::BasicCredentials.new()
|
11
|
+
# c.username
|
12
|
+
# > [Foreman] Username: admin
|
13
|
+
# => "admin"
|
14
|
+
# @example use container with preset value
|
15
|
+
# c = HammerCLIForeman::BasicCredentials.new(:username => 'admin')
|
16
|
+
# c.username
|
17
|
+
# => "admin"
|
4
18
|
def initialize(params={})
|
5
19
|
@username = params[:username]
|
6
20
|
@password = params[:password]
|
7
21
|
end
|
8
22
|
|
23
|
+
# Get username. Prompt for it when not set
|
24
|
+
# @return [String]
|
9
25
|
def username
|
10
|
-
@username ||= ask_user(_("[Foreman]
|
26
|
+
@username ||= ask_user(_("[Foreman] Username: ")) if HammerCLI.interactive?
|
11
27
|
@username
|
12
28
|
end
|
13
29
|
|
30
|
+
# Get password. Prompt for it when not set. Password characters are replaced with asterisks on the screen.
|
31
|
+
# @return [String]
|
14
32
|
def password
|
15
|
-
@password ||= ask_user(_("[Foreman]
|
33
|
+
@password ||= ask_user(_("[Foreman] Password for %s: ") % username, true) if HammerCLI.interactive?
|
16
34
|
@password
|
17
35
|
end
|
18
36
|
|
@@ -21,16 +39,29 @@ module HammerCLIForeman
|
|
21
39
|
end
|
22
40
|
|
23
41
|
def clear
|
42
|
+
super
|
24
43
|
@username = nil
|
25
44
|
@password = nil
|
26
45
|
end
|
27
46
|
|
47
|
+
# Convert credentials to hash usable for merging to RestClient configuration.
|
48
|
+
# @return [Hash]
|
28
49
|
def to_params
|
29
50
|
{
|
30
|
-
:
|
51
|
+
:user => username,
|
31
52
|
:password => password
|
32
53
|
}
|
33
54
|
end
|
34
55
|
|
56
|
+
private
|
57
|
+
|
58
|
+
def ask_user(prompt, silent=false)
|
59
|
+
if silent
|
60
|
+
ask(prompt) {|q| q.echo = false}
|
61
|
+
else
|
62
|
+
ask(prompt)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
35
66
|
end
|
36
67
|
end
|
@@ -3,7 +3,16 @@ module HammerCLIForeman
|
|
3
3
|
class OperationNotSupportedError < StandardError; end
|
4
4
|
|
5
5
|
# Resolver exceptions
|
6
|
-
class ResolverError < StandardError
|
6
|
+
class ResolverError < StandardError
|
7
|
+
|
8
|
+
attr_reader :resource
|
9
|
+
|
10
|
+
def initialize(msg, resource)
|
11
|
+
@resource = resource
|
12
|
+
super(msg)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
7
16
|
class MissingSeachOptions < ResolverError; end
|
8
17
|
|
9
18
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'hammer_cli_foreman/usergroup'
|
2
|
+
|
3
|
+
module HammerCLIForeman
|
4
|
+
class ExternalUsergroup < HammerCLIForeman::Command
|
5
|
+
resource :external_usergroups
|
6
|
+
desc _("View and manage user group's external user groups")
|
7
|
+
|
8
|
+
class ListCommand < HammerCLIForeman::ListCommand
|
9
|
+
output do
|
10
|
+
field :id, _("Id")
|
11
|
+
field :name, _("Name")
|
12
|
+
field :_auth_source, _("Auth source"), Fields::Reference
|
13
|
+
end
|
14
|
+
|
15
|
+
def extend_data(record)
|
16
|
+
key = record.keys.find{ |k| k =~ /^auth_source/ }
|
17
|
+
record['_auth_source'] = record[key]
|
18
|
+
record
|
19
|
+
end
|
20
|
+
|
21
|
+
build_options
|
22
|
+
end
|
23
|
+
|
24
|
+
class InfoCommand < HammerCLIForeman::InfoCommand
|
25
|
+
output ListCommand.output_definition
|
26
|
+
|
27
|
+
def extend_data(record)
|
28
|
+
key = record.keys.find{ |k| k =~ /^auth_source/ }
|
29
|
+
record['_auth_source'] = record[key]
|
30
|
+
record
|
31
|
+
end
|
32
|
+
|
33
|
+
build_options
|
34
|
+
end
|
35
|
+
|
36
|
+
class RefreshExternalUsergroupsCommand < HammerCLIForeman::ListCommand
|
37
|
+
action :refresh
|
38
|
+
command_name 'refresh'
|
39
|
+
desc _("Refresh external user group")
|
40
|
+
|
41
|
+
output do
|
42
|
+
field :name, _("Name")
|
43
|
+
field :_auth_source, _("Auth source")
|
44
|
+
end
|
45
|
+
|
46
|
+
def extend_data(record)
|
47
|
+
key = record.keys.find{ |k| k =~ /^auth_source/ }
|
48
|
+
record['_auth_source'] = record[key]
|
49
|
+
record
|
50
|
+
end
|
51
|
+
|
52
|
+
build_options
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
class CreateCommand < HammerCLIForeman::CreateCommand
|
57
|
+
success_message _("External user group created")
|
58
|
+
failure_message _("Could not create external user group")
|
59
|
+
|
60
|
+
build_options
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
class UpdateCommand < HammerCLIForeman::UpdateCommand
|
65
|
+
success_message _("External user group updated")
|
66
|
+
failure_message _("Could not update external user group")
|
67
|
+
|
68
|
+
build_options
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
73
|
+
success_message _("External user group deleted")
|
74
|
+
failure_message _("Could not delete the external user group")
|
75
|
+
|
76
|
+
build_options
|
77
|
+
end
|
78
|
+
|
79
|
+
autoload_subcommands
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
@@ -9,19 +9,22 @@ module HammerCLIForeman
|
|
9
9
|
module CommonHostUpdateOptions
|
10
10
|
|
11
11
|
def self.included(base)
|
12
|
-
base.option "--
|
13
|
-
|
14
|
-
base.option "--
|
15
|
-
|
16
|
-
|
17
|
-
base.option "--partition-table-id", "PARTITION_TABLE_ID", " "
|
18
|
-
base.option "--compute-resource-id", "COMPUTE_RESOURCE", " "
|
19
|
-
base.option "--puppetclass-ids", "PUPPETCLASS_IDS", " ",
|
20
|
-
:format => HammerCLI::Options::Normalizers::List.new
|
12
|
+
base.option "--owner", "OWNER_LOGIN", _("Login of the owner"),
|
13
|
+
:attribute_name => :option_user_login
|
14
|
+
base.option "--owner-id", "OWNER_ID", _("ID of the owner"),
|
15
|
+
:attribute_name => :option_user_id
|
16
|
+
|
21
17
|
base.option "--root-password", "ROOT_PW", " "
|
22
18
|
base.option "--ask-root-password", "ASK_ROOT_PW", " ",
|
23
19
|
:format => HammerCLI::Options::Normalizers::Bool.new
|
24
20
|
|
21
|
+
base.option "--puppet-proxy", "PUPPET_PROXY_NAME", ""
|
22
|
+
base.option "--puppet-ca-proxy", "PUPPET_CA_PROXY_NAME", ""
|
23
|
+
base.option "--puppet-class-ids", "PUPPET_CLASS_IDS", "",
|
24
|
+
:format => HammerCLI::Options::Normalizers::List.new,
|
25
|
+
:attribute_name => :option_puppetclass_ids
|
26
|
+
base.option "--puppet-classes", "PUPPET_CLASS_NAMES", "",
|
27
|
+
:format => HammerCLI::Options::Normalizers::List.new
|
25
28
|
|
26
29
|
bme_options = {}
|
27
30
|
bme_options[:default] = 'true' if base.action.to_sym == :create
|
@@ -45,16 +48,11 @@ module HammerCLIForeman
|
|
45
48
|
:format => HammerCLI::Options::Normalizers::Enum.new(['build', 'image'])
|
46
49
|
|
47
50
|
base.build_options :without => [
|
48
|
-
# - temporarily disabled params until they are fixed in API ------------------------
|
49
|
-
# issue #3884
|
50
|
-
:puppet_class_ids,
|
51
51
|
# - temporarily disabled params that will be removed from the api ------------------
|
52
52
|
:provision_method, :capabilities, :flavour_ref, :image_ref, :start,
|
53
53
|
:network, :cpus, :memory, :provider, :type, :tenant_id, :image_id,
|
54
|
-
# - avoids future conflicts as :root_pass is currently missing in the api docs
|
55
|
-
:root_pass,
|
56
54
|
# ----------------------------------------------------------------------------------
|
57
|
-
:
|
55
|
+
:puppet_class_ids, :host_parameters_attributes]
|
58
56
|
end
|
59
57
|
|
60
58
|
def self.ask_password
|
@@ -64,15 +62,14 @@ module HammerCLIForeman
|
|
64
62
|
|
65
63
|
def request_params
|
66
64
|
params = super
|
65
|
+
params['host']['owner_id'] ||= get_resource_id(HammerCLIForeman.foreman_resource(:users), :required => false, :scoped => true)
|
66
|
+
params['host']['puppet_proxy_id'] ||= proxy_id(option_puppet_proxy)
|
67
|
+
params['host']['puppet_ca_proxy_id'] ||= proxy_id(option_puppet_ca_proxy)
|
68
|
+
params['host']['puppetclass_ids'] = option_puppetclass_ids || puppet_class_ids(option_puppet_classes)
|
67
69
|
|
68
70
|
params['host']['build'] = option_build unless option_build.nil?
|
69
71
|
params['host']['managed'] = option_managed unless option_managed.nil?
|
70
72
|
params['host']['enabled'] = option_enabled unless option_enabled.nil?
|
71
|
-
|
72
|
-
params['host']['puppetclass_ids'] = option_puppetclass_ids unless option_puppetclass_ids.nil?
|
73
|
-
|
74
|
-
params['host']['ptable_id'] = option_partition_table_id unless option_partition_table_id.nil?
|
75
|
-
params['host']['compute_resource_id'] = option_compute_resource_id unless option_compute_resource_id.nil?
|
76
73
|
params['host']['host_parameters_attributes'] = parameter_attributes
|
77
74
|
params['host']['compute_attributes'] = option_compute_attributes || {}
|
78
75
|
params['host']['compute_attributes']['volumes_attributes'] = nested_attributes(option_volume_list)
|
@@ -88,12 +85,19 @@ module HammerCLIForeman
|
|
88
85
|
if option_ask_root_password
|
89
86
|
params['host']['root_pass'] = HammerCLIForeman::CommonHostUpdateOptions::ask_password
|
90
87
|
end
|
91
|
-
|
92
88
|
params
|
93
89
|
end
|
94
90
|
|
95
91
|
private
|
96
92
|
|
93
|
+
def proxy_id(name)
|
94
|
+
resolver.smart_proxy_id('option_name' => name) if name
|
95
|
+
end
|
96
|
+
|
97
|
+
def puppet_class_ids(names)
|
98
|
+
resolver.puppetclass_ids('option_names' => names) if names
|
99
|
+
end
|
100
|
+
|
97
101
|
def parameter_attributes
|
98
102
|
return {} unless option_parameters
|
99
103
|
option_parameters.collect do |key, value|
|
@@ -327,7 +331,7 @@ module HammerCLIForeman
|
|
327
331
|
if option_managed
|
328
332
|
validator.all(:option_environment_id, :option_architecture_id, :option_domain_id,
|
329
333
|
:option_puppet_proxy_id, :option_operatingsystem_id,
|
330
|
-
:
|
334
|
+
:option_ptable_id).required
|
331
335
|
else
|
332
336
|
# unmanaged host only requires environment
|
333
337
|
validator.option(:option_environment_id).required
|