{"error":["Field 'policy_name' invalid"]} running @ v0.10.0 gem chef-api
Doltair opened this issue · 7 comments
Hi, @tas50 Good day!
We tried using the latest gem v0.10.0, but we're having issues into it. Below are the error encountered.
Description
{"error":["Field 'policy_name' invalid"]}
from /home/jenkins/.chefdk/gem/ruby/2.6.0/gems/chef-api-0.10.0/lib/chef-api/connection.rb:304:in `block in request'
from /opt/chefdk/embedded/lib/ruby/2.6.0/net/http.rb:920:in `start'
from /home/jenkins/.chefdk/gem/ruby/2.6.0/gems/chef-api-0.10.0/lib/chef-api/connection.rb:290:in `request'
from /home/jenkins/.chefdk/gem/ruby/2.6.0/gems/chef-api-0.10.0/lib/chef-api/connection.rb:142:in `put'
from /home/jenkins/.chefdk/gem/ruby/2.6.0/gems/chef-api-0.10.0/lib/chef-api/resources/base.rb:162:in `put'
from /home/jenkins/.chefdk/gem/ruby/2.6.0/gems/chef-api-0.10.0/lib/chef-api/resources/base.rb:685:in `save!'
from /home/jenkins/.chefdk/gem/ruby/2.6.0/gems/chef-api-0.10.0/lib/chef-api/aclable.rb:23:in `save!'
from patch_build_core.rb:76:in `block (3 levels) in <main>'
from patch_build_core.rb:70:in `each'
from patch_build_core.rb:70:in `block (2 levels) in <main>'
from patch_build_core.rb:66:in `each'
from patch_build_core.rb:66:in `block in <main>'
from patch_build_core.rb:61:in `each'
We looked into this. The node object adds attributes for policy_name and policy_group: https://github.com/chef/chef-api/blob/cfafa5a32f3d98d102c0a873a8d67c57abcfa2f4/lib/chef-api/resources/node.rb#L13-L14
Assuming you want to create a node without these attributes, you must remove them.
A better fix might be changing the serialization so that these attributes are omitted if nil.
Thank you @jtatum for looking at this.
Yeah, we we're just updating attributes for the node, like run_lists and normal attributes through chef-api but yeah it seems its appending or looking for the policy attribute? What will be our temporary solution to this? anyhow we're still using none v0.10's version.
Hi @tas50 , @jtatum just a query, about changes in v0.10.5 in nodes resources,
attribute :run_list, type: Array, default: []
What was changed and it does not perform any updates to chef server?
Doing like:
nodes.update(run_list_add, 'run_list' => @run_lists_add)
Nothing happens compared before v0.10.x? and the node attributes are not updated. Thank you so much!
@Doltair policy_name
is the name of the Chef policy. If you don't know what policies are in Chef, you probably don't want to set a policy_name
or a policy_group
. The problem is, this gem sends both, whether you set one or not. We chose to fork this gem and and delete the policy_name
and policy_group
attributes. That's a workaround, not a "fix" though because the gem needs to support policy_name
and/or policy_group
when one is supplied.
To add further context, chef policies are optional. If you choose not to have, it is set to null
.
I ran into the same problem when nodes.updates
was called, it augments the payload with policy_name
, policy_group
, and barf.
Removing policy_name
, policy_group
, or marking them as optional is reasonable.
(cc @tas50 )