Skip to content

POST/PATCH of Service results in string hash type #1283

@uejo

Description

@uejo

When i make a post or patch request to a service to update for example the options, it is saved as strings.

Before POST:

irb(main):007:0> service.options
=>
{:config_info=>
  {:provision=>
    {:repository_id=>"5",
     :playbook_id=>"24",
     :credential_id=>"19",
     ...

After POST:

irb(main):004:0> service.options
=>
{"config_info"=>
  {"provision"=>
    {"repository_id"=>"5",
     "playbook_id"=>"24",
     "credential_id"=>"19",
     ...

This results in cases like the retirement of embedded ansible playbooks to fail, since it seems to expect symbolized keys:

ERROR -- automation: Q-task_id([r2849_service_retire_task_4904]) MiqAeServiceModelBase.ar_method raised: <NoMethodError>: <undefined method `slice' for nil:NilClass

                                                                    options.fetch_path(:config_info, action.downcase.to_sym).slice(*CONFIG_OPTIONS_WHITELIST).with_indifferent_access
                                                                                                                            ^^^^^^>
Apr 01 15:20:03 manageiq-dev.example.com automation[146765]: ERROR -- automation: Q-task_id([r2849_service_retire_task_4904]) /var/www/miq/vmdb/app/models/service_ansible_playbook.rb:132:in `config_options'
                                                                /var/www/miq/vmdb/app/models/service_ansible_playbook.rb:136:in `save_job_options'
                                                                /var/www/miq/vmdb/app/models/service_ansible_playbook.rb:18:in `preprocess'

Reproduce:
Patch/Post "options" in a service and check in rails console if service options are now a string.

Version:
radjabov-pre.20241016113258_354d9ab
VMware appliance

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions