Don't emit ProcessOutput objects
joshcooper opened this issue · 0 comments
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 (via Puppet::Util::Execution.execute or the commands provider framework) may be emitted as:
mysql_database:
PERCONA_SCHEMA:
ensure: present
charset: !ruby/string:Puppet::Util::Execution::ProcessOutput utf8
collate: !ruby/string:Puppet::Util::Execution::ProcessOutput utf8_general_ciWhile 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 calling mysql_raw(...).to_s in
puppetlabs-mysql/lib/puppet/provider/mysql.rb
Lines 100 to 118 in ab9292e
Expected Behavior
Running puppet resource mysql_database --to_yaml should not emit ProcessOuput tags
Additional Context
This originally was reported in https://puppet.atlassian.net/browse/PUP-7808?focusedCommentId=59303