Project

General

Profile

Actions

Bug #22693

closed

hammer can't create user-group with more than 20 roles

Added by Lukas Kallies over 6 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Category:
Users and roles
Target version:
-
Difficulty:
Triaged:
No
Team Backlog:
Fixed in Releases:
Found in Releases:
In Kanboard:

Description

hammer can't create a user-group wiht more than 20 roles. It is possible to create a user-group with more than 20 roles in the UI, though.

How to reproduce

Create roles:

for i in {1..23}; do hammer role create --name ${i}; done
hammer user-group create --name xux --admin true --roles '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21'

Expected Output

User group [xux] created

Adding only 20 roles works:

hammer -c katello.yaml user-group create --name xux --admin true --roles '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20'
User group [xux] created

Output

Could not create the user group:
  Error: one of roles not found

Debug Output

[ INFO 2018-02-26 13:49:09 Init] Initialization of Hammer CLI (0.11.0) has started...
[DEBUG 2018-02-26 13:49:09 Init] Running at ruby 2.4.0-p0
[ INFO 2018-02-26 13:49:09 Init] Configuration from the file /etc/hammer/cli_config.yml has been loaded
[ INFO 2018-02-26 13:49:09 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman.yml has been loaded
[ INFO 2018-02-26 13:49:09 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_bootdisk.yml has been loaded
[ INFO 2018-02-26 13:49:09 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_docker.yml has been loaded
[ INFO 2018-02-26 13:49:09 Init] Configuration from the file /etc/hammer/cli.modules.d/foreman_tasks.yml has been loaded
[ INFO 2018-02-26 13:49:09 Init] Configuration from the file /etc/hammer/cli.modules.d/katello.yml has been loaded
[ INFO 2018-02-26 13:49:09 Init] Configuration from the file /home/vagrant/katello.yaml has been loaded
[DEBUG 2018-02-26 13:49:09 SSLoptions] SSL options: {
    :ssl_ca_file => "/etc/pki/katello/certs/katello-server-ca.crt",
     :verify_ssl => true
}
[DEBUG 2018-02-26 13:49:09 API] Global headers: {
        :content_type => "application/json",
              :accept => "application/json;version=2",
    "Accept-Language" => "en" 
}
[DEBUG 2018-02-26 13:49:09 API] Follow redirects: never
[DEBUG 2018-02-26 13:49:09 Connection] Registered: foreman
[ INFO 2018-02-26 13:49:09 Modules] Extension module hammer_cli_foreman (0.11.0) loaded
[ INFO 2018-02-26 13:49:09 Modules] Extension module hammer_cli_foreman_bootdisk (0.1.3) loaded
[ INFO 2018-02-26 13:49:09 HammerCLI::MainCommand] subcommand organization (HammerCLIForeman::Organization) was removed.
[ INFO 2018-02-26 13:49:09 HammerCLI::MainCommand] subcommand organization (HammerCLIKatello::Organization) was created.
[ INFO 2018-02-26 13:49:09 Modules] Extension module hammer_cli_katello (0.11.5.1) loaded
[DEBUG 2018-02-26 13:49:09 Init] Using locale 'en'
[DEBUG 2018-02-26 13:49:09 Init] 'mo' files for locale domain 'hammer-cli' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.11.0/locale'
[DEBUG 2018-02-26 13:49:09 Init] 'mo' files for locale domain 'hammer-cli-foreman' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/locale'
[DEBUG 2018-02-26 13:49:09 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.4/locale'
[DEBUG 2018-02-26 13:49:09 Init] 'mo' files for locale domain 'hammer-cli-katello' loaded from '/opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_katello-0.11.5.1/locale'
[ INFO 2018-02-26 13:49:09 HammerCLI::MainCommand] Called with options: {"option_debug"=>true, "option_config"=>"katello.yaml"}
[ INFO 2018-02-26 13:49:09 HammerCLIForeman::Usergroup] Called with options: {}
[ INFO 2018-02-26 13:49:09 HammerCLIForeman::Usergroup::CreateCommand] Called with options: {"option_role_names"=>["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"], "option_name"=>"xux", "option_admin"=>true}
[ INFO 2018-02-26 13:49:09 API] Server: https://centos7-katello-3-6.lkallies-puzzle.example.com
[ INFO 2018-02-26 13:49:09 API] GET /api/roles
[DEBUG 2018-02-26 13:49:09 API] Params: {
    :search => "name = \"1\" or name = \"2\" or name = \"3\" or name = \"4\" or name = \"5\" or name = \"6\" or name = \"7\" or name = \"8\" or name = \"9\" or name = \"10\" or name = \"11\" or name = \"12\" or name = \"13\" or name = \"14\" or name = \"15\" or name = \"16\" or name = \"17\" or name = \"18\" or name = \"19\" or name = \"20\" or name = \"21\"" 
}
[DEBUG 2018-02-26 13:49:09 API] Headers: {
    :params => {
        :search => "name = \"1\" or name = \"2\" or name = \"3\" or name = \"4\" or name = \"5\" or name = \"6\" or name = \"7\" or name = \"8\" or name = \"9\" or name = \"10\" or name = \"11\" or name = \"12\" or name = \"13\" or name = \"14\" or name = \"15\" or name = \"16\" or name = \"17\" or name = \"18\" or name = \"19\" or name = \"20\" or name = \"21\"" 
    }
}
[DEBUG 2018-02-26 13:49:09 API] Using authenticator: HammerCLIForeman::Api::InteractiveBasicAuth
[DEBUG 2018-02-26 13:49:09 API] Response: {
       "total" => 35,
    "subtotal" => 21,
        "page" => 1,
    "per_page" => 20,
      "search" => "name = \"1\" or name = \"2\" or name = \"3\" or name = \"4\" or name = \"5\" or name = \"6\" or name = \"7\" or name = \"8\" or name = \"9\" or name = \"10\" or name = \"11\" or name = \"12\" or name = \"13\" or name = \"14\" or name = \"15\" or name = \"16\" or name = \"17\" or name = \"18\" or name = \"19\" or name = \"20\" or name = \"21\"",
        "sort" => {
           "by" => "name",
        "order" => "ASC" 
    },
     "results" => [
        [ 0] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "1",
                        "id" => 13,
               "description" => nil,
                    "origin" => nil
        },
        [ 1] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "10",
                        "id" => 22,
               "description" => nil,
                    "origin" => nil
        },
        [ 2] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "11",
                        "id" => 23,
               "description" => nil,
                    "origin" => nil
        },
        [ 3] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "12",
                        "id" => 24,
               "description" => nil,
                    "origin" => nil
        },
        [ 4] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "13",
                        "id" => 25,
               "description" => nil,
                    "origin" => nil
        },
        [ 5] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "14",
                        "id" => 26,
               "description" => nil,
                    "origin" => nil
        },
        [ 6] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "15",
                        "id" => 27,
               "description" => nil,
                    "origin" => nil
        },
        [ 7] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "16",
                        "id" => 28,
               "description" => nil,
                    "origin" => nil
        },
        [ 8] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "17",
                        "id" => 29,
               "description" => nil,
                    "origin" => nil
        },
        [ 9] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "18",
                        "id" => 30,
               "description" => nil,
                    "origin" => nil
        },
        [10] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "19",
                        "id" => 31,
               "description" => nil,
                    "origin" => nil
        },
        [11] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "2",
                        "id" => 14,
               "description" => nil,
                    "origin" => nil
        },
        [12] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "20",
                        "id" => 32,
               "description" => nil,
                    "origin" => nil
        },
        [13] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "21",
                        "id" => 33,
               "description" => nil,
                    "origin" => nil
        },
        [14] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "3",
                        "id" => 15,
               "description" => nil,
                    "origin" => nil
        },
        [15] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "4",
                        "id" => 16,
               "description" => nil,
                    "origin" => nil
        },
        [16] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "5",
                        "id" => 17,
               "description" => nil,
                    "origin" => nil
        },
        [17] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "6",
                        "id" => 18,
               "description" => nil,
                    "origin" => nil
        },
        [18] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "7",
                        "id" => 19,
               "description" => nil,
                    "origin" => nil
        },
        [19] {
                   "builtin" => 0,
            "cloned_from_id" => nil,
                      "name" => "8",
                        "id" => 20,
               "description" => nil,
                    "origin" => nil
        }
    ]
}
[DEBUG 2018-02-26 13:49:09 API] Response headers: {
                                 :date => "Mon, 26 Feb 2018 13:49:09 GMT",
                               :server => "Apache/2.4.6 (CentOS)",
                      :foreman_version => "1.17.0-RC1",
                  :foreman_api_version => "2",
                      :apipie_checksum => "1887f750ded6566752ed57aa035ea1f6",
                        :cache_control => "max-age=0, private, must-revalidate",
                         :x_request_id => "e9cd96f3-1ca0-43aa-ba30-ef4cc60e99de",
                            :x_runtime => "0.051775",
              :content_security_policy => "default-src 'self'; child-src 'self'; connect-src 'self' ws: wss:; img-src 'self' data: *.gravatar.com; script-src 'unsafe-eval' 'unsafe-inline' 'self'; style-src 'unsafe-inline' 'self'",
            :strict_transport_security => "max-age=631139040; includeSubdomains",
               :x_content_type_options => "nosniff",
                   :x_download_options => "noopen",
                      :x_frame_options => "sameorigin",
    :x_permitted_cross_domain_policies => "none",
                     :x_xss_protection => "1; mode=block",
                         :x_powered_by => "Phusion Passenger 4.0.53",
                           :set_cookie => [
        [0] "_session_id=c0d3dbd63ca34e0444fbb5fa4d542161; path=/; secure; HttpOnly" 
    ],
                                 :etag => "W/\"a57e2c3b3f45ce2ed661b044e7534085-gzip\"",
                               :status => "200 OK",
                                 :vary => "Accept-Encoding",
                     :content_encoding => "gzip",
                       :content_length => "348",
                         :content_type => "application/json; charset=utf-8" 
}
[DEBUG 2018-02-26 13:49:09 Exception] Using exception handler HammerCLIForeman::ExceptionHandler#handle_general_exception
[ERROR 2018-02-26 13:49:09 Exception] Error: one of roles not found
Could not create the user group:
  Error: one of roles not found
[ERROR 2018-02-26 13:49:09 Exception] 

HammerCLIForeman::ResolverError (one of roles not found):
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/id_resolver.rb:159:in `find_resources'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/id_resolver.rb:150:in `get_ids'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/id_resolver.rb:137:in `block (2 levels) in define_id_finders'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/commands.rb:142:in `get_resource_ids'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/commands.rb:208:in `block in customized_options'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/commands.rb:205:in `each'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/commands.rb:205:in `customized_options'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/commands.rb:220:in `request_params'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.11.0/lib/hammer_cli/apipie/command.rb:43:in `send_request'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli_foreman-0.11.0/lib/hammer_cli_foreman/commands.rb:166:in `send_request'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.11.0/lib/hammer_cli/apipie/command.rb:34:in `execute'
    /opt/theforeman/tfm/root/usr/share/gems/gems/clamp-1.1.2/lib/clamp/command.rb:63:in `run'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.11.0/lib/hammer_cli/abstract.rb:29:in `run'
    /opt/theforeman/tfm/root/usr/share/gems/gems/clamp-1.1.2/lib/clamp/subcommand/execution.rb:11:in `execute'
    /opt/theforeman/tfm/root/usr/share/gems/gems/clamp-1.1.2/lib/clamp/command.rb:63:in `run'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.11.0/lib/hammer_cli/abstract.rb:29:in `run'
    /opt/theforeman/tfm/root/usr/share/gems/gems/clamp-1.1.2/lib/clamp/subcommand/execution.rb:11:in `execute'
    /opt/theforeman/tfm/root/usr/share/gems/gems/clamp-1.1.2/lib/clamp/command.rb:63:in `run'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.11.0/lib/hammer_cli/abstract.rb:29:in `run'
    /opt/theforeman/tfm/root/usr/share/gems/gems/clamp-1.1.2/lib/clamp/command.rb:132:in `run'
    /opt/theforeman/tfm/root/usr/share/gems/gems/hammer_cli-0.11.0/bin/hammer:147:in `<top (required)>'
    /usr/bin/hammer:22:in `load'
    /usr/bin/hammer:22:in `<main>'

hammer version

[vagrant@centos7-katello-3-6 ~]$ rpm -qa tfm-rubygem-hammer_cli\*
tfm-rubygem-hammer_cli_foreman_bootdisk-0.1.3-6.el7.noarch
tfm-rubygem-hammer_cli_foreman-0.11.0-2.el7.noarch
tfm-rubygem-hammer_cli_katello-0.11.5.1-1.el7.noarch
tfm-rubygem-hammer_cli-0.11.0-2.el7.noarch
tfm-rubygem-hammer_cli_foreman_tasks-0.0.12-2.fm1_17.el7.noarch
tfm-rubygem-hammer_cli_foreman_docker-0.0.4-3.el7.noarch

Related issues 1 (0 open1 closed)

Is duplicate of Hammer CLI - Bug #24717: hammer hostgroup create fails due to pagination when the number of supplied puppet classes exceeds entries_per_pageClosedOleh FedorenkoActions
Actions

Also available in: Atom PDF