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

Don't emit ProcessOutput objects

Open joshcooper opened this issue 2 years ago • 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_ci

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 calling mysql_raw(...).to_s in https://github.com/puppetlabs/puppetlabs-mysql/blob/ab9292eab45e81e693738e93f0eaf55d9bfd7752/lib/puppet/provider/mysql.rb#L100-L118

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

joshcooper avatar Dec 07 '23 16:12 joshcooper