Project

General

Profile

Actions

Bug #29885

closed

puppet hash smart class parameter failing validation

Added by Matt Darcy almost 4 years ago. Updated almost 4 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Difficulty:
Triaged:
No
Fixed in Releases:
Found in Releases:

Description

running foreman 1.24.2 on CentOS 7.8.2003 with puppet agent 6.15.0-1 and puppet server 6.11.1-1

A puppet module for configuring hashicorp consul ( puppet module install KyleAnderson-consul --version 6.0.1 ) expects a hash parameter to configure the consul service.

the parameter config_hash is set in the init.pp of the module, I set the default value to

config_hash = {'datacenter' => 'bathhome', node_name => $facts['fqdn'],log_level => 'INFO', server => false, ui => true, client_addr => '0.0.0.0'},

as this is the default value I want all nodes to have.

The puppet agent run on the clients works fine.

I decide to change the parameter server => false to server => true to test the agent raft functionality. If I select the override check box, select the parameter type to "hash" (and make zero changes from the default parameter, just save as was working) foreman errors

The class could not be saved because of an error in one of the class parameters.

and next to the actual parameter in the default box {'datacenter' => 'bathhome', node_name => $facts['fqdn'],log_level => 'INFO', server => false, ui => true, client_addr => '0.0.0.0'} is the word 'is invalid'

the production.log shows the form submission as

2020-05-19T18:29:11 [I|app|9e77a99c] Processing by PuppetclassesController#update as HTML
2020-05-19T18:29:11 [I|app|9e77a99c] Parameters: {"utf8"=>"✓", "authenticity_token"=>"gxDrAOMWr946smgQhLURZhc6zPVjEqtakNkVAzzvSRhHp9IttzvLWO4TzyYX54ynk/g0NBK3cRl8RzeoA/Wyuw==", "puppetclass"=>{"hostgroup_ids"=>["", "43", "41", "33"], "class_params_attributes"=>{"0"=>{"key"=>"acl_api_hostname", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3248"}, "1"=>{"key"=>"acl_api_port", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3250"}, "2"=>{"key"=>"acl_api_protocol", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3249"}, "3"=>{"key"=>"acl_api_token", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3252"}, "4"=>{"key"=>"acl_api_tries", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3251"}, "5"=>{"key"=>"acls", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "merge_overrides"=>"0", "id"=>"3245"}, "6"=>{"key"=>"allow_binding_to_root_ports", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3295"}, "7"=>{"key"=>"arch", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3253"}, "8"=>{"key"=>"archive_path", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3254"}, "9"=>{"key"=>"binary_group", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3256"}, "10"=>{"key"=>"binary_mode", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3257"}, "11"=>{"key"=>"binary_name", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3258"}, "12"=>{"key"=>"binary_owner", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3259"}, "13"=>{"key"=>"bin_dir", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3255"}, "14"=>{"key"=>"checks", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "merge_overrides"=>"0", "id"=>"3260"}, "15"=>{"key"=>"config_defaults", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3261"}, "16"=>{"key"=>"config_dir", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3262"}, "17"=>{"key"=>"config_hash", "description"=>"", "override"=>"1", "parameter_type"=>"hash", "default_value"=>"[FILTERED]", "omit"=>"0", "hidden_value"=>"[FILTERED]", "required"=>"0", "validator_type"=>"", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "merge_overrides"=>"0", "lookup_values_attributes"=>"[FILTERED]", "id"=>"3263"}, "18"=>{"key"=>"config_mode", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3264"}, "19"=>{"key"=>"docker_image", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3265"}, "20"=>{"key"=>"download_extension", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3266"}, "21"=>{"key"=>"download_url", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3267"}, "22"=>{"key"=>"download_url_base", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3268"}, "23"=>{"key"=>"enable_beta_ui", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3294"}, "24"=>{"key"=>"extra_groups", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "merge_overrides"=>"0", "id"=>"3269"}, "25"=>{"key"=>"extra_options", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3270"}, "26"=>{"key"=>"group", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3271"}, "27"=>{"key"=>"init_style", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3273"}, "28"=>{"key"=>"install_method", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3274"}, "29"=>{"key"=>"join_wan", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3275"}, "30"=>{"key"=>"log_file", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3272"}, "31"=>{"key"=>"manage_group", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3276"}, "32"=>{"key"=>"manage_service", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3277"}, "33"=>{"key"=>"manage_user", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3278"}, "34"=>{"key"=>"os", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3279"}, "35"=>{"key"=>"package_ensure", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3280"}, "36"=>{"key"=>"package_name", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3281"}, "37"=>{"key"=>"policies", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "merge_overrides"=>"0", "id"=>"3247"}, "38"=>{"key"=>"pretty_config", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3282"}, "39"=>{"key"=>"pretty_config_indent", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3283"}, "40"=>{"key"=>"proxy_server", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3284"}, "41"=>{"key"=>"purge_config_dir", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3285"}, "42"=>{"key"=>"restart_on_change", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3286"}, "43"=>{"key"=>"service_enable", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3287"}, "44"=>{"key"=>"service_ensure", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3288"}, "45"=>{"key"=>"services", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "merge_overrides"=>"0", "id"=>"3289"}, "46"=>{"key"=>"shell", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3293"}, "47"=>{"key"=>"tokens", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "merge_overrides"=>"0", "id"=>"3246"}, "48"=>{"key"=>"user", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3290"}, "49"=>{"key"=>"version", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "id"=>"3291"}, "50"=>{"key"=>"watches", "description"=>"", "override"=>"0", "path"=>"fqdn\r\nhostgroup\r\nos\r\ndomain", "merge_overrides"=>"0", "id"=>"3292"}}}, "environment_filter"=>"", "commit"=>"Submit", "id"=>"514-consul"}
2020-05-19T18:29:11 [E|app|9e77a99c] Failed to save: Default value is invalid

Jeremylenz on the foreman IRC channel helpfully suggested that https://github.com/theforeman/foreman/blob/develop/app/views/puppetclasses/_form.html.erb referencing https://github.com/theforeman/foreman/blob/a68ffcb24319e30c1724de40f1a445f77d86c319/app/models/puppetclass.rb#L26 form is validating this input

I'm seeing a persistent problems with hash parameters in foreman and ended up setting a parameter in the params.pp for the gitlab module because foreman couldn't handle the hash param.

Happy to provide more detail, logs or testing on this.

Actions #1

Updated by Matt Darcy almost 4 years ago

  • Status changed from New to Rejected

user error - invalid bug

Actions

Also available in: Atom PDF