Actions
Bug #16206
openHammer should warn when user puts multiple options that are intended to be used only once
Status:
New
Priority:
Normal
Assignee:
-
Category:
Visibility
Target version:
-
Description
Hammer allows to specify each option multiple times and the last value wins. This can be confusing to users:
I have tried a assign several roles at once. Hammer probably is not designed to do this. But it does not failure when passing multiple --role-id options:
[root@foo ~]# hammer -d -v -u admin -p ***** user add-role --id 5 --role-id 11 --role-id 9 [ INFO 2016-08-19 13:40:56 Init] Initialization of Hammer CLI (0.5.1.11) has started... [DEBUG 2016-08-19 13:40:56 Init] Running at ruby 2.2.2-p95 [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli_config.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/csv.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_bootdisk.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_discovery.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_docker.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_remote_execution.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_tasks.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/import.yml has been loaded [ INFO 2016-08-19 13:40:56 Init] Configuration from the file /etc/hammer/cli.modules.d/katello.yml has been loaded [DEBUG 2016-08-19 13:40:56 Connection] Registered: foreman [DEBUG 2016-08-19 13:40:56 API] Global headers: { :content_type => "application/json", :accept => "application/json;version=2", "Accept-Language" => "en" } [DEBUG 2016-08-19 13:40:56 API] Follow redirects: never [ INFO 2016-08-19 13:40:56 Modules] Extension module hammer_cli_foreman (0.5.1.9) loaded [ INFO 2016-08-19 13:40:56 Modules] Extension module hammer_cli_foreman_bootdisk (0.1.3.3) loaded [ INFO 2016-08-19 13:40:56 Modules] Extension module hammer_cli_foreman_discovery (0.0.2.3) loaded [ INFO 2016-08-19 13:40:57 Modules] Extension module hammer_cli_import (0.11.2) loaded [ INFO 2016-08-19 13:40:57 HammerCLI::MainCommand] subcommand organization (HammerCLIForeman::Organization) was removed. [ INFO 2016-08-19 13:40:57 HammerCLI::MainCommand] subcommand organization (HammerCLIKatello::Organization) was created. [ INFO 2016-08-19 13:40:58 Modules] Extension module hammer_cli_katello (0.0.22.23) loaded [DEBUG 2016-08-19 13:40:58 Init] Using locale 'en' [DEBUG 2016-08-19 13:40:58 Init] 'mo' files for locale domain 'hammer-cli' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.5.1.11/locale' [DEBUG 2016-08-19 13:40:58 Init] 'mo' files for locale domain 'hammer-cli-foreman' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.5.1.9/locale' [DEBUG 2016-08-19 13:40:58 Init] 'mo' files for locale domain 'hammer_cli_foreman_docker' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman_docker-0.0.6/locale' [DEBUG 2016-08-19 13:40:58 Init] 'mo' files for locale domain 'hammer-cli-katello' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_katello-0.0.22.23/locale' [ INFO 2016-08-19 13:40:58 HammerCLI::MainCommand] Called with options: {"option_verbose"=>true, "option_debug"=>true, "option_username"=>"admin", "option_password"=>"***"} [ INFO 2016-08-19 13:40:58 HammerCLIForeman::User] Called with options: {} [ INFO 2016-08-19 13:40:58 HammerCLIForeman::User::UserAddRoleCommand] Called with options: {"option_role_id"=>9, "option_id"=>"5"} [ INFO 2016-08-19 13:40:58 API] Server: https://localhost/ [ INFO 2016-08-19 13:40:58 API] GET /api/users/5 [DEBUG 2016-08-19 13:40:58 API] Params: {} [DEBUG 2016-08-19 13:40:58 API] Headers: { :params => {} } [DEBUG 2016-08-19 13:40:58 API] Response: { "firstname" => "9HnK1L09bh", "lastname" => "Ri0CsVpxxj", "mail" => "3edzhg@example.com", "admin" => true, "auth_source_id" => 1, "auth_source_name" => "Internal", "timezone" => nil, "locale" => nil, "last_login_on" => "2016-08-11 19:09:37 UTC", "created_at" => "2016-08-11 19:06:01 UTC", "updated_at" => "2016-08-11 19:09:37 UTC", "id" => 5, "login" => "3edzhg", "default_location" => nil, "locations" => [], "default_organization" => nil, "organizations" => [], "auth_source_internal" => { "id" => 1, "type" => "AuthSourceInternal", "name" => "Internal" }, "mail_notifications" => [], "roles" => [ [0] { "name" => "View hosts", "id" => 9 }, [1] { "name" => "Anonymous", "id" => 14 } ], "usergroups" => [] } [DEBUG 2016-08-19 13:40:58 API] Response headers: { :date => "Fri, 19 Aug 2016 17:40:58 GMT", :server => "Apache/2.4.6 (Red Hat Enterprise Linux)", :x_frame_options => "SAMEORIGIN", :x_xss_protection => "1; mode=block", :x_content_type_options => "nosniff", :foreman_version => "1.11.0.49", :foreman_api_version => "2", :apipie_checksum => "5d126cac0ca6038faa774a0c7af7f5dc", :cache_control => "max-age=0, private, must-revalidate", :x_request_id => "4712b898-91e1-490d-9507-f6d566f9a81e", :x_runtime => "0.086214", :x_powered_by => "Phusion Passenger 4.0.18", :set_cookie => [ [0] "_session_id=13e2c4c39086a73092da66505ce18630; path=/; secure; HttpOnly" ], :etag => "\"d0f7d79493b9634ffb58c9a74df17401-gzip\"", :status => "200 OK", :vary => "Accept-Encoding", :content_encoding => "gzip", :content_length => "319", :content_type => "application/json; charset=utf-8" } [ INFO 2016-08-19 13:40:58 API] Server: https://localhost/ [ INFO 2016-08-19 13:40:58 API] PUT /api/users/5 [DEBUG 2016-08-19 13:40:58 API] Params: { "user" => { "role_ids" => [ [0] "9", [1] "14" ] } } [DEBUG 2016-08-19 13:40:58 API] Headers: {} [DEBUG 2016-08-19 13:40:58 API] Response: { "firstname" => "9HnK1L09bh", "lastname" => "Ri0CsVpxxj", "mail" => "3edzhg@example.com", "admin" => true, "auth_source_id" => 1, "auth_source_name" => "Internal", "timezone" => nil, "locale" => nil, "last_login_on" => "2016-08-11 19:09:37 UTC", "created_at" => "2016-08-11 19:06:01 UTC", "updated_at" => "2016-08-11 19:09:37 UTC", "id" => 5, "login" => "3edzhg", "default_location" => nil, "locations" => [], "default_organization" => nil, "organizations" => [], "auth_source_internal" => { "id" => 1, "type" => "AuthSourceInternal", "name" => "Internal" }, "mail_notifications" => [], "roles" => [ [0] { "name" => "View hosts", "id" => 9 }, [1] { "name" => "Anonymous", "id" => 14 } ], "usergroups" => [] } [DEBUG 2016-08-19 13:40:58 API] Response headers: { :date => "Fri, 19 Aug 2016 17:40:58 GMT", :server => "Apache/2.4.6 (Red Hat Enterprise Linux)", :x_frame_options => "SAMEORIGIN", :x_xss_protection => "1; mode=block", :x_content_type_options => "nosniff", :foreman_version => "1.11.0.49", :foreman_api_version => "2", :apipie_checksum => "5d126cac0ca6038faa774a0c7af7f5dc", :cache_control => "max-age=0, private, must-revalidate", :x_request_id => "21e09a90-630a-4e7f-a7e4-e70efc08d895", :x_runtime => "0.110168", :x_powered_by => "Phusion Passenger 4.0.18", :set_cookie => [ [0] "request_method=PUT; path=/", [1] "_session_id=310dff7cc3fa37d253af168b49a674cb; path=/; secure; HttpOnly" ], :etag => "\"d0f7d79493b9634ffb58c9a74df17401-gzip\"", :status => "200 OK", :vary => "Accept-Encoding", :content_encoding => "gzip", :content_length => "319", :content_type => "application/json; charset=utf-8" } User role has been assigned
Besides command doesn't show any error, it ignored the first role with id "11" passed as parameter:
[root@foo ~]# hammer -u admin -p ***** user info --id 5 Id: 5 Login: 3edzhg Name: 9HnK1L09bh Ri0CsVpxxj Email: 3edzhg@example.com Admin: yes Authorized by: Internal Locale: default Timezone: default Last login: 2016/08/11 19:09:37 Default organization: Default location: Roles: View hosts Anonymous User groups: Created at: 2016/08/11 19:06:01 Updated at: 2016/08/11 19:09:37
List of host
[root@foo ~]# hammer -u admin -p ***** role list ---|------------------------- ID | NAME ---|------------------------- 6 | Access Insights Admin 5 | Access Insights Viewer 14 | Anonymous 1 | Boot disk access 18 | Compliance manager 17 | Compliance viewer 19 | Create ARF report 13 | Default user 16 | Discovery Manager 15 | Discovery Reader 10 | Edit hosts 8 | Edit partition tables 7 | Manager 4 | Red Hat Access Logs 21 | Remote Execution Manager 20 | Remote Execution User 12 | Site manager 2 | Tasks Manager 3 | Tasks Reader 11 | Viewer 9 | View hosts ---|-------------------------
So this command should:
1) Assign all roles present on multiple role-id option or;
2) Return an error msg informing multiple role-id options are not allowed
Actions