puppetlabs-stdlib icon indicating copy to clipboard operation
puppetlabs-stdlib copied to clipboard

stdlib::to_toml behaves differently on dotted keys compared to TOML::Generator

Open jay7x opened this issue 8 months ago • 1 comments

Describe the Bug

TOML supports "dotted keys", that is about the same as our "dotted notation" when accessing facts. Our stdlib::to_toml() uses toml-rb code, that has the issue when dealing with dotted keys.

I hit this when following the puppet-grafana's LDAP config example. It uses toml gem at the moment. When replaced with stdlib::to_toml() it produces a broken TOML.

As I see from unit tests, to_toml() expects a proper Puppet DSL Hash, while toml gem can work with dotted keys.

As a consequence, it's impossible to just replace TOML::Generator with our to_toml() function, because example syntax uses dotted key instead of a nested Hash or Array.

Another problem is sections reordering. E.g. [servers.attributes] section goes before [[servers]], which is wrong.

Expected Behavior

  1. It'd be nice if dotted keys wouldn't be quoted.
  2. It'd be nice if sections wouldn't be reordered.

jay7x avatar Apr 26 '25 06:04 jay7x

See https://github.com/voxpupuli/puppet-grafana/pull/333 for a bit more context and details.

TBH, I'm not sure if this is a bug or "feature"..

jay7x avatar Apr 26 '25 07:04 jay7x