Merging Hashes


#1

Just wondering if anyone could help with merging of hashes.

I am attempting to take a given node object and copy it to a hash:

vars = node.test.to_hash

Then I have a data bag with similar keys/values as the node.test object.

{
“id”: “mydbag”,
“default”: {
“var1”: “value1”,
“var2”: “value2”
}
}

So the default in attributes for node.test.var1 = "value_1"
And the data bag is var1 => value1

I want to be able to vars.deep_merge!(dbag[“default”]) but every time I try Chef throws

Chef::Exceptions::ImmutableAttributeModification: Node attributes are read-only when you do not specify which precedence level to set. To set an attribute use code like `node.default[“key”] = “value”’

vars.class returns Hash as expected and not a node object so why the Exception?

Any way around this?