hammer_cli_foreman 2.0.2 → 2.1.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.
- checksums.yaml +4 -4
- data/doc/developer_docs.md +1 -0
- data/doc/plugin.md +22 -0
- data/doc/release_notes.md +20 -4
- data/lib/hammer_cli_foreman.rb +8 -0
- data/lib/hammer_cli_foreman/api/oauth/authentication_code_grant.rb +7 -4
- data/lib/hammer_cli_foreman/associating_commands.rb +33 -5
- data/lib/hammer_cli_foreman/auth.rb +6 -6
- data/lib/hammer_cli_foreman/bookmark.rb +50 -0
- data/lib/hammer_cli_foreman/command_extensions.rb +2 -0
- data/lib/hammer_cli_foreman/command_extensions/puppet_environment.rb +13 -7
- data/lib/hammer_cli_foreman/command_extensions/puppet_environments.rb +13 -7
- data/lib/hammer_cli_foreman/command_extensions/subnet.rb +25 -0
- data/lib/hammer_cli_foreman/command_extensions/user.rb +17 -0
- data/lib/hammer_cli_foreman/commands.rb +14 -9
- data/lib/hammer_cli_foreman/compute_resource.rb +15 -0
- data/lib/hammer_cli_foreman/compute_resource/ec2.rb +11 -0
- data/lib/hammer_cli_foreman/compute_resource/gce.rb +9 -0
- data/lib/hammer_cli_foreman/compute_resource/libvirt.rb +11 -0
- data/lib/hammer_cli_foreman/compute_resource/openstack.rb +7 -0
- data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +21 -9
- data/lib/hammer_cli_foreman/compute_resource/vmware.rb +15 -2
- data/lib/hammer_cli_foreman/hostgroup.rb +11 -19
- data/lib/hammer_cli_foreman/hosts/common_update_options.rb +32 -10
- data/lib/hammer_cli_foreman/id_resolver.rb +12 -11
- data/lib/hammer_cli_foreman/mail_notification.rb +31 -0
- data/lib/hammer_cli_foreman/option_builders.rb +70 -48
- data/lib/hammer_cli_foreman/option_sources.rb +1 -0
- data/lib/hammer_cli_foreman/option_sources/referenced_resource_id_params.rb +47 -0
- data/lib/hammer_cli_foreman/subnet.rb +26 -15
- data/lib/hammer_cli_foreman/task_helper.rb +180 -0
- data/lib/hammer_cli_foreman/user.rb +3 -17
- data/lib/hammer_cli_foreman/version.rb +1 -1
- data/lib/hammer_cli_foreman/virtual_machine.rb +55 -0
- 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/data/2.1/foreman_api.json +1 -0
- data/test/functional/associating_commands_test.rb +134 -30
- data/test/functional/bookmark_test.rb +193 -0
- data/test/functional/host_test.rb +27 -1
- data/test/functional/mail_notification_test.rb +57 -0
- data/test/functional/subnet/create_test.rb +28 -5
- data/test/functional/template_test.rb +2 -2
- data/test/functional/virtual_machine_test.rb +129 -0
- data/test/test_helper.rb +1 -1
- metadata +23 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4db93fb25a95e818a8b0b9fdaab9ab8760cc7f42c2607661e99ec4bb990815d4
|
4
|
+
data.tar.gz: d2187c023afc8dd80ae0247b53475354913950f1416e5f8bc308a48388e807fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac00a2af523db5f7cf5c881273f715128fbc1df82604ecd01bf6c06b95a09963fac84e76c79260b77908925f38e4864ace72a8f3b31f4b1e60179b8b89b716d6
|
7
|
+
data.tar.gz: 5300260e5c63d59ba8971dd784bb5f1e23a18a2de5b1611be02204c8a6b670368678742d8fa60815118b0f3b50127a4db92c599fb797d4bf045deb6ed366d263
|
data/doc/developer_docs.md
CHANGED
@@ -10,6 +10,7 @@ Foreman plugin extends the Hammer Core in following areas:
|
|
10
10
|
- [Building options](option_builder.md#option-builders)
|
11
11
|
- [Automatic name resolution](name_id_resolution.md#name-to-id-resolution)
|
12
12
|
- [Testing commands](testing.md#testing-hammer-commands)
|
13
|
+
- [Writing a plugin](plugin.md#writing-a-plugin)
|
13
14
|
|
14
15
|
It's recommended that you set `:refresh_cache: true` in the plugin settings if
|
15
16
|
engaging in API development to enable aggressive apidoc cache checking.
|
data/doc/plugin.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Writing a plugin
|
2
|
+
|
3
|
+
### Basic
|
4
|
+
|
5
|
+
If you want to create a plugin for hammer-cli-foreman, you might want to create
|
6
|
+
a simple draft at first.
|
7
|
+
|
8
|
+
To do so, just run the following:
|
9
|
+
```
|
10
|
+
# You will need to checkout this repository first if you don't have it already
|
11
|
+
$ git checkout https://github.com/theforeman/hammer-cli-foreman.git
|
12
|
+
$ cd hammer-cli-foreman
|
13
|
+
$ rake plugin:draft
|
14
|
+
# fill prompts
|
15
|
+
```
|
16
|
+
This will create a directory called `hammer-cli-foreman-prompted-name` with
|
17
|
+
basic structure where you can put your code afterwards. Please, don't forget to
|
18
|
+
take a look at `TODO`s as there might be places you want to change or adjust to
|
19
|
+
your needs first.
|
20
|
+
|
21
|
+
For more information, please see: https://github.com/theforeman/hammer-cli/blob/master/doc/developer_docs.md
|
22
|
+
as well as https://github.com/theforeman/hammer-cli-foreman/blob/master/doc/developer_docs.md
|
data/doc/release_notes.md
CHANGED
@@ -1,10 +1,26 @@
|
|
1
1
|
Release notes
|
2
2
|
=============
|
3
|
-
### 2.0
|
3
|
+
### 2.1.0 (2020-05-14)
|
4
|
+
* Bump hammer_cli to 2.1.0 ([PR #519](https://github.com/theforeman/hammer-cli-foreman/pull/519))
|
5
|
+
* Ask for oauth code only when needed ([PR #517](https://github.com/theforeman/hammer-cli-foreman/pull/517)), [#29635](http://projects.theforeman.org/issues/29635)
|
6
|
+
* Possibility to create ipv6 subnet, [#28760](http://projects.theforeman.org/issues/28760)
|
7
|
+
* Add the ability to manage bookmarks ([PR #510](https://github.com/theforeman/hammer-cli-foreman/pull/510)), [#12845](http://projects.theforeman.org/issues/12845)
|
8
|
+
* Add aliases for info/list/delete commands ([PR #512](https://github.com/theforeman/hammer-cli-foreman/pull/512)), [#29413](http://projects.theforeman.org/issues/29413)
|
9
|
+
* Help contains squeezed options ([PR #489](https://github.com/theforeman/hammer-cli-foreman/pull/489)), [#28440](http://projects.theforeman.org/issues/28440)
|
10
|
+
* Add cr to hostgroup info, [#29140](http://projects.theforeman.org/issues/29140)
|
11
|
+
* Add rake task with plugin template
|
12
|
+
* Added virtual machine command for compute resource ([PR #469](https://github.com/theforeman/hammer-cli-foreman/pull/469)), [#20451](http://projects.theforeman.org/issues/20451)
|
13
|
+
* Add display options to host creation on ovirt ([PR #507](https://github.com/theforeman/hammer-cli-foreman/pull/507)), [#29254](http://projects.theforeman.org/issues/29254)
|
14
|
+
* Add mail notification command ([PR #509](https://github.com/theforeman/hammer-cli-foreman/pull/509)), [#29326](http://projects.theforeman.org/issues/29326)
|
4
15
|
* Use right param for os default template ([PR #508](https://github.com/theforeman/hammer-cli-foreman/pull/508)), [#29274](http://projects.theforeman.org/issues/29274)
|
5
|
-
|
6
|
-
|
7
|
-
*
|
16
|
+
* Update api docs to 2.1
|
17
|
+
* Correct hot add options ([PR #505](https://github.com/theforeman/hammer-cli-foreman/pull/505)), [#29253](http://projects.theforeman.org/issues/29253)
|
18
|
+
* Feature #28836 - allow multiple disassociating of provisioning templates ([PR #502](https://github.com/theforeman/hammer-cli-foreman/pull/502)), [#28836](http://projects.theforeman.org/issues/28836)
|
19
|
+
* Fixed updating host owner when ownertype is usergroup ([PR #501](https://github.com/theforeman/hammer-cli-foreman/pull/501)), [#11279](http://projects.theforeman.org/issues/11279)
|
20
|
+
* Remove duplicate api requests on addassociatedcommand ([PR #503](https://github.com/theforeman/hammer-cli-foreman/pull/503)), [#29096](http://projects.theforeman.org/issues/29096)
|
21
|
+
* Fix help for ovirt boolean values, [#29026](http://projects.theforeman.org/issues/29026)
|
22
|
+
* Deprecate --root-pass in host group, [#22573](http://projects.theforeman.org/issues/22573)
|
23
|
+
* Bump to 2.1.0-develop
|
8
24
|
|
9
25
|
### 2.0.0 (2020-02-12)
|
10
26
|
* Change the description of the scoped loc and org ([PR #494](https://github.com/theforeman/hammer-cli-foreman/pull/494)), [#28869](http://projects.theforeman.org/issues/28869)
|
data/lib/hammer_cli_foreman.rb
CHANGED
@@ -11,6 +11,7 @@ module HammerCLIForeman
|
|
11
11
|
require 'hammer_cli_foreman/i18n'
|
12
12
|
|
13
13
|
require 'hammer_cli_foreman/version'
|
14
|
+
require 'hammer_cli_foreman/task_helper'
|
14
15
|
require 'hammer_cli_foreman/output'
|
15
16
|
require 'hammer_cli_foreman/output/fields'
|
16
17
|
require 'hammer_cli_foreman/exception_handler'
|
@@ -180,6 +181,13 @@ module HammerCLIForeman
|
|
180
181
|
HammerCLI::MainCommand.lazy_subcommand('trend', _("Manage trends"),
|
181
182
|
'HammerCLIForeman::Trend', 'hammer_cli_foreman/trend'
|
182
183
|
)
|
184
|
+
|
185
|
+
HammerCLI::MainCommand.lazy_subcommand('mail-notification', _("Manage mail notifications"),
|
186
|
+
'HammerCLIForeman::MailNotification', 'hammer_cli_foreman/mail_notification'
|
187
|
+
)
|
188
|
+
|
189
|
+
HammerCLI::MainCommand.lazy_subcommand('bookmark', _("Manage bookmarks"),
|
190
|
+
'HammerCLIForeman::Bookmark', 'hammer_cli_foreman/bookmark')
|
183
191
|
rescue => e
|
184
192
|
handler = HammerCLIForeman::ExceptionHandler.new(:context => {}, :adapter => :base)
|
185
193
|
handler.handle_exception(e)
|
@@ -5,19 +5,22 @@ module HammerCLIForeman
|
|
5
5
|
module Api
|
6
6
|
module Oauth
|
7
7
|
class AuthenticationCodeGrant < ApipieBindings::Authenticators::TokenAuth
|
8
|
-
attr_accessor :oidc_token_endpoint, :oidc_authorization_endpoint,
|
8
|
+
attr_accessor :oidc_token_endpoint, :oidc_authorization_endpoint,
|
9
|
+
:oidc_client_id, :token, :oidc_redirect_uri
|
9
10
|
|
10
11
|
def initialize(oidc_token_endpoint, oidc_authorization_endpoint, oidc_client_id, oidc_redirect_uri)
|
11
12
|
@oidc_token_endpoint = oidc_token_endpoint
|
12
13
|
@oidc_authorization_endpoint = oidc_authorization_endpoint
|
13
14
|
@oidc_client_id = oidc_client_id
|
14
15
|
@oidc_redirect_uri = oidc_redirect_uri
|
15
|
-
super
|
16
|
+
super(nil)
|
16
17
|
end
|
17
18
|
|
18
19
|
def authenticate(request, token)
|
19
20
|
if HammerCLI.interactive?
|
20
21
|
set_token_interactively
|
22
|
+
else
|
23
|
+
set_token(oidc_token_endpoint, oidc_authorization_endpoint, oidc_client_id, oidc_redirect_uri)
|
21
24
|
end
|
22
25
|
super
|
23
26
|
end
|
@@ -35,7 +38,7 @@ module HammerCLIForeman
|
|
35
38
|
if @oidc_client_id.to_s.empty? || @oidc_authorization_endpoint.to_s.empty? || @oidc_redirect_uri.to_s.empty? || @oidc_token_endpoint.to_s.empty?
|
36
39
|
@token = nil
|
37
40
|
else
|
38
|
-
get_code
|
41
|
+
@code ||= get_code
|
39
42
|
@token = HammerCLIForeman::OpenidConnect.new(
|
40
43
|
@oidc_token_endpoint, @oidc_client_id).get_token_via_2fa(@code, @oidc_redirect_uri)
|
41
44
|
end
|
@@ -68,7 +71,7 @@ module HammerCLIForeman
|
|
68
71
|
"&redirect_uri=#{@oidc_redirect_uri}"\
|
69
72
|
'&scope=openid'
|
70
73
|
HammerCLI.interactive_output.say("Enter URL in browser: #{@token_url}")
|
71
|
-
|
74
|
+
ask_user(_("Code:%s") % " ")
|
72
75
|
end
|
73
76
|
|
74
77
|
def get_oidc_authorization_endpoint
|
@@ -245,6 +245,7 @@ module HammerCLIForeman
|
|
245
245
|
def request_params
|
246
246
|
params = super
|
247
247
|
|
248
|
+
template_ids = params['operatingsystem']['provisioning_template_ids']
|
248
249
|
if options['option_provisioning_template_search']
|
249
250
|
templates = HammerCLIForeman.collection_to_common_format(
|
250
251
|
associated_resource.call(
|
@@ -255,10 +256,10 @@ module HammerCLIForeman
|
|
255
256
|
|
256
257
|
templates.each do |template|
|
257
258
|
template_id = template['id']
|
258
|
-
|
259
|
+
template_ids << template_id.to_s
|
259
260
|
end
|
260
261
|
end
|
261
|
-
params['operatingsystem']['provisioning_template_ids'] =
|
262
|
+
params['operatingsystem']['provisioning_template_ids'] = template_ids.uniq
|
262
263
|
params
|
263
264
|
end
|
264
265
|
|
@@ -269,10 +270,37 @@ module HammerCLIForeman
|
|
269
270
|
|
270
271
|
class RemoveProvisioningTemplateCommand < HammerCLIForeman::RemoveAssociatedCommand
|
271
272
|
associated_resource :provisioning_templates
|
272
|
-
desc _("Disassociate
|
273
|
+
desc _("Disassociate provisioning templates")
|
273
274
|
|
274
|
-
|
275
|
-
|
275
|
+
option "--provisioning-template-ids", "PROVISIONING_TEMPLATE_IDS", _("List of provisioning template ids"),
|
276
|
+
format: HammerCLI::Options::Normalizers::List.new
|
277
|
+
option "--provisioning-templates", "PROVISIONING_TEMPLATE_NAMES", _("List of provisioning template names"),
|
278
|
+
format: HammerCLI::Options::Normalizers::List.new, attribute_name: :option_provisioning_template_names
|
279
|
+
option "--provisioning-template-search", "PROVISIONING_TEMPLATE_SEARCH", _("Provisioning template name regex to search, all matching templates will be disassociated")
|
280
|
+
|
281
|
+
def request_params
|
282
|
+
params = super
|
283
|
+
|
284
|
+
template_ids = params['operatingsystem']['provisioning_template_ids']
|
285
|
+
if options['option_provisioning_template_search']
|
286
|
+
templates = HammerCLIForeman.collection_to_common_format(
|
287
|
+
associated_resource.call(
|
288
|
+
:index,
|
289
|
+
:search => "name ~ \"#{options['option_provisioning_template_search']}\"")
|
290
|
+
)
|
291
|
+
raise ResolverError.new(_("%s not found.") % associated_resource.singular_name, associated_resource) if templates.empty?
|
292
|
+
|
293
|
+
templates.each do |template|
|
294
|
+
template_id = template['id']
|
295
|
+
template_ids.delete(template_id.to_s)
|
296
|
+
end
|
297
|
+
end
|
298
|
+
params['operatingsystem']['provisioning_template_ids'] = template_ids.uniq
|
299
|
+
params
|
300
|
+
end
|
301
|
+
|
302
|
+
success_message _("The provisioning templates were disassociated.")
|
303
|
+
failure_message _("Could not disassociate the provisioning templates")
|
276
304
|
end
|
277
305
|
end
|
278
306
|
|
@@ -46,16 +46,16 @@ module HammerCLIForeman
|
|
46
46
|
if option_two_factor?
|
47
47
|
Oauth.execute_with_params(
|
48
48
|
AUTH_TYPES[:oauth_authentication_code_grant],
|
49
|
-
option_oidc_token_endpoint,
|
50
|
-
option_oidc_authorization_endpoint,
|
51
|
-
option_oidc_client_id,
|
52
|
-
option_oidc_redirect_uri
|
49
|
+
option_oidc_token_endpoint || HammerCLI::Settings.get(:foreman, :oidc_token_endpoint),
|
50
|
+
option_oidc_authorization_endpoint || HammerCLI::Settings.get(:foreman, :oidc_authorization_endpoint),
|
51
|
+
option_oidc_client_id || HammerCLI::Settings.get(:foreman, :oidc_client_id),
|
52
|
+
option_oidc_redirect_uri || HammerCLI::Settings.get(:foreman, :oidc_redirect_uri)
|
53
53
|
)
|
54
54
|
else
|
55
55
|
Oauth.execute_with_params(
|
56
56
|
AUTH_TYPES[:oauth_password_grant],
|
57
|
-
option_oidc_token_endpoint,
|
58
|
-
option_oidc_client_id,
|
57
|
+
option_oidc_token_endpoint || HammerCLI::Settings.get(:foreman, :oidc_token_endpoint),
|
58
|
+
option_oidc_client_id || HammerCLI::Settings.get(:foreman, :oidc_client_id),
|
59
59
|
option_username || HammerCLI::Settings.get('_params', 'username'),
|
60
60
|
option_password || HammerCLI::Settings.get('_params', 'password')
|
61
61
|
)
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module HammerCLIForeman
|
4
|
+
class Bookmark < HammerCLIForeman::Command
|
5
|
+
resource :bookmarks
|
6
|
+
|
7
|
+
class ListCommand < HammerCLIForeman::ListCommand
|
8
|
+
output do
|
9
|
+
field :id, _('Id')
|
10
|
+
field :name, _('Name')
|
11
|
+
field :controller, _('Controller')
|
12
|
+
field :query, _('Search Query')
|
13
|
+
field :public, _('Public')
|
14
|
+
field :owner_id, _('Owner Id')
|
15
|
+
field :owner_type, _('Owner Type')
|
16
|
+
end
|
17
|
+
|
18
|
+
build_options
|
19
|
+
end
|
20
|
+
|
21
|
+
class InfoCommand < HammerCLIForeman::InfoCommand
|
22
|
+
output ListCommand.output_definition
|
23
|
+
|
24
|
+
build_options
|
25
|
+
end
|
26
|
+
|
27
|
+
class CreateCommand < HammerCLIForeman::CreateCommand
|
28
|
+
success_message _('Bookmark %<name>s created.')
|
29
|
+
failure_message _('Failed to create %<name>s bookmark')
|
30
|
+
|
31
|
+
build_options
|
32
|
+
end
|
33
|
+
|
34
|
+
class UpdateCommand < HammerCLIForeman::UpdateCommand
|
35
|
+
success_message _('Bookmark %<name>s updated successfully.')
|
36
|
+
failure_message _('Failed to update %<name>s bookmark')
|
37
|
+
|
38
|
+
build_options
|
39
|
+
end
|
40
|
+
|
41
|
+
class DeleteCommand < HammerCLIForeman::DeleteCommand
|
42
|
+
success_message _('Bookmark deleted successfully.')
|
43
|
+
failure_message _('Failed to delete bookmark')
|
44
|
+
|
45
|
+
build_options
|
46
|
+
end
|
47
|
+
|
48
|
+
autoload_subcommands
|
49
|
+
end
|
50
|
+
end
|
@@ -5,3 +5,5 @@ require 'hammer_cli_foreman/command_extensions/option_sources'
|
|
5
5
|
require 'hammer_cli_foreman/command_extensions/hosts'
|
6
6
|
require 'hammer_cli_foreman/command_extensions/ping'
|
7
7
|
require 'hammer_cli_foreman/command_extensions/status'
|
8
|
+
require 'hammer_cli_foreman/command_extensions/user'
|
9
|
+
require 'hammer_cli_foreman/command_extensions/subnet'
|
@@ -2,13 +2,19 @@ module HammerCLIForeman
|
|
2
2
|
module CommandExtensions
|
3
3
|
class PuppetEnvironment < HammerCLI::CommandExtensions
|
4
4
|
# Remove when support of --environment options is ended.
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
option_family(
|
6
|
+
aliased_resource: 'environment',
|
7
|
+
description: _('Puppet environment'),
|
8
|
+
deprecation: _("Use %s instead") % '--puppet-environment[-id]',
|
9
|
+
deprecated: { '--environment' => _("Use %s instead") % '--puppet-environment[-id]',
|
10
|
+
'--environment-id' => _("Use %s instead") % '--puppet-environment[-id]'}
|
11
|
+
) do
|
12
|
+
parent '--environment-id', 'ENVIRONMENT_ID', _(''),
|
13
|
+
format: HammerCLI::Options::Normalizers::Number.new,
|
14
|
+
attribute_name: :option_environment_id
|
15
|
+
child '--environment', 'ENVIRONMENT_NAME', _('Environment name'),
|
16
|
+
attribute_name: :option_environment_name
|
17
|
+
end
|
12
18
|
|
13
19
|
option_sources do |sources, command|
|
14
20
|
sources.find_by_name('IdResolution').insert_relative(
|
@@ -2,13 +2,19 @@ module HammerCLIForeman
|
|
2
2
|
module CommandExtensions
|
3
3
|
class PuppetEnvironments < HammerCLI::CommandExtensions
|
4
4
|
# Remove when support of --environments options is ended.
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
option_family(
|
6
|
+
aliased_resource: 'environment',
|
7
|
+
description: _('Puppet environments'),
|
8
|
+
deprecation: _("Use %s instead") % '--puppet-environment[s|-ids]',
|
9
|
+
deprecated: { '--environments' => _("Use %s instead") % '--puppet-environment[s|-ids]',
|
10
|
+
'--environment-ids' => _("Use %s instead") % '--puppet-environment[s|-ids]' }
|
11
|
+
) do
|
12
|
+
parent '--environment-ids', 'ENVIRONMENT_IDS', _('Environment IDs'),
|
13
|
+
format: HammerCLI::Options::Normalizers::List.new,
|
14
|
+
attribute_name: :option_environment_ids
|
15
|
+
child '--environments', 'ENVIRONMENT_NAMES', _(''),
|
16
|
+
attribute_name: :option_environment_names
|
17
|
+
end
|
12
18
|
|
13
19
|
option_sources do |sources, command|
|
14
20
|
sources.find_by_name('IdResolution').insert_relative(
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module HammerCLIForeman
|
2
|
+
module CommandExtensions
|
3
|
+
class Subnet < HammerCLI::CommandExtensions
|
4
|
+
option "--dns", "DNS_NAME", _("DNS Proxy to use within this subnet"),
|
5
|
+
attribute_name: :option_dns_name,
|
6
|
+
referenced_resource: :smart_proxy
|
7
|
+
option "--dhcp", "DHCP_NAME", _("DHCP Proxy to use within this subnet"),
|
8
|
+
attribute_name: :option_dhcp_name,
|
9
|
+
referenced_resource: :smart_proxy
|
10
|
+
option "--tftp", "TFTP_NAME", _("TFTP Proxy to use within this subnet"),
|
11
|
+
attribute_name: :option_tftp_name,
|
12
|
+
referenced_resource: :smart_proxy
|
13
|
+
option "--prefix", "PREFIX", _("Network prefix in CIDR notation (e.g. 64) for this subnet")
|
14
|
+
|
15
|
+
option_sources do |sources, command|
|
16
|
+
sources.find_by_name('IdResolution').insert_relative(
|
17
|
+
:after,
|
18
|
+
'IdParams',
|
19
|
+
HammerCLIForeman::OptionSources::ReferencedResourceIdParams.new(command)
|
20
|
+
)
|
21
|
+
sources
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module HammerCLIForeman
|
2
|
+
module CommandExtensions
|
3
|
+
class User < HammerCLI::CommandExtensions
|
4
|
+
option '--default-organization', 'DEFAULT_ORGANIZATION_NAME', _('Default organization name'),
|
5
|
+
aliased_resource: 'default_organization', referenced_resource: 'default_organization'
|
6
|
+
option '--default-location', 'DEFAULT_LOCATION_NAME', _('Default location name'),
|
7
|
+
aliased_resource: 'default_location', referenced_resource: 'default_location'
|
8
|
+
|
9
|
+
option '--ask-password', 'ASK_PW', ' ', format: HammerCLI::Options::Normalizers::Bool.new
|
10
|
+
|
11
|
+
option_sources do |sources, command|
|
12
|
+
sources << HammerCLIForeman::OptionSources::UserParams.new(command)
|
13
|
+
sources
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -275,8 +275,8 @@ module HammerCLIForeman
|
|
275
275
|
record
|
276
276
|
end
|
277
277
|
|
278
|
-
def self.
|
279
|
-
super(
|
278
|
+
def self.command_names(*names)
|
279
|
+
super(*names) || %w(list index)
|
280
280
|
end
|
281
281
|
|
282
282
|
def execute
|
@@ -502,8 +502,8 @@ module HammerCLIForeman
|
|
502
502
|
end
|
503
503
|
end
|
504
504
|
|
505
|
-
def self.
|
506
|
-
super(
|
505
|
+
def self.command_names(*names)
|
506
|
+
super(*names) || %w(info show)
|
507
507
|
end
|
508
508
|
|
509
509
|
def send_request
|
@@ -565,8 +565,8 @@ module HammerCLIForeman
|
|
565
565
|
|
566
566
|
action :destroy
|
567
567
|
|
568
|
-
def self.
|
569
|
-
super(
|
568
|
+
def self.command_names(*names)
|
569
|
+
super(*names) || %w(delete destroy)
|
570
570
|
end
|
571
571
|
|
572
572
|
end
|
@@ -687,7 +687,7 @@ module HammerCLIForeman
|
|
687
687
|
class RemoveAssociatedCommand < AssociatedCommand
|
688
688
|
|
689
689
|
def self.command_name(name=nil)
|
690
|
-
name = super(name) || (associated_resource ? "remove-"+associated_resource.singular_name : nil)
|
690
|
+
name = super(name) || (associated_resource ? "remove-" + associated_resource.singular_name : nil)
|
691
691
|
name.respond_to?(:gsub) ? name.gsub('_', '-') : name
|
692
692
|
end
|
693
693
|
|
@@ -698,9 +698,14 @@ module HammerCLIForeman
|
|
698
698
|
|
699
699
|
def get_new_ids
|
700
700
|
ids = get_current_ids.map(&:to_s)
|
701
|
-
required_id = get_associated_identifier.to_s
|
702
701
|
|
703
|
-
|
702
|
+
associated_identifiers = get_associated_identifiers
|
703
|
+
associated_identifier = get_associated_identifier
|
704
|
+
|
705
|
+
required_ids = associated_identifiers.nil? ? [] : associated_identifiers.map(&:to_s)
|
706
|
+
required_ids << associated_identifier.to_s unless associated_identifier.nil?
|
707
|
+
|
708
|
+
ids = ids.delete_if { |id| required_ids.include? id }
|
704
709
|
ids
|
705
710
|
end
|
706
711
|
|