https://puppet.atlassian.net/browse/PUP-7808 changed puppet resource <type> --to_yaml so that it emits structured data correctly, using pops serialization. One unintended side-effect is that any module whose instances method returns resources whose values are the result of executed commands (via Puppet::Util::Execution.execute or the commands provider framework) may be emitted as:
Describe the Bug
https://puppet.atlassian.net/browse/PUP-7808 changed
puppet resource <type> --to_yaml
so that it emits structured data correctly, using pops serialization. One unintended side-effect is that any module whose instances method returns resources whose values are the result of executed commands (viaPuppet::Util::Execution.execute
or the commands provider framework) may be emitted as:While it is technically valid YAML, it is not parseable if the puppet classes aren't loaded or tags aren't stripped.
We will fix puppet in https://puppet.atlassian.net/browse/PUP-10105 to not emit
ProcessOutput
classes (and likely warn).But the mysql module should call
ProcessOutput#to_s
when creating resources. I think this could be handled when callingmysql_raw(...).to_s
in https://github.com/puppetlabs/puppetlabs-mysql/blob/ab9292eab45e81e693738e93f0eaf55d9bfd7752/lib/puppet/provider/mysql.rb#L100-L118Expected Behavior
Running
puppet resource mysql_database --to_yaml
should not emitProcessOuput
tagsAdditional Context
This originally was reported in https://puppet.atlassian.net/browse/PUP-7808?focusedCommentId=59303