| Hey Ben Ford! Question for you on this one. It looks like we do support virtualized classes in a sense in puppet. Josh Cooper and I are trying to figure out the best path forward on this. Currently, following the example in the description of PUP-1606, I can get the virtual class to notify successfully. It only errors out when I include `--strict=error`. ``` ➜ puppet git:(master) ✗ cat iclass.pp class vclass { notify {"vclass": message => "I've been realized" } } class iclass { @class {"vclass": } } class {"iclass":} ➜ puppet git:(master) ✗ be ./bin/puppet apply --debug iclass.pp Debug: Runtime environment: puppet_version=6.16.0, ruby_version=2.3.8, run_mode=user, default_encoding=UTF-8 Debug: Loading external facts from /Users/melissa/.puppetlabs/opt/puppet/cache/facts.d Debug: Facter: Found no suitable resolves of 1 for ec2_metadata . . . Debug: Facter: value for filesystems is still nil Debug: Facter: value for ipaddress6 is still nil Debug: Reset text domain to :production Warning: Classes are not virtualizable (file: /Users/melissa/workdir/puppet/iclass.pp, line: 8, column: 3) Notice: Compiled catalog for pyewacket.vpn.puppet.net in environment production in 0.04 seconds Debug: Creating default schedules Debug: Loaded state in 0.00 seconds Debug: Loaded state in 0.00 seconds Info: Applying configuration version '1588192102' Notice: I've been realized Notice: /Notify[vclass]/message: defined 'message' as 'I\'ve been realized' Debug: Finishing transaction 70323370342720 Debug: Storing state Debug: Pruned old state cache entries in 0.00 seconds Debug: Stored state in 0.00 seconds Notice: Applied catalog in 0.01 seconds Debug: Applying settings catalog for sections reporting, metrics Debug: Finishing transaction 70323644029760 Debug: Received report to process from pyewacket.vpn.puppet.net Debug: Processing report from pyewacket.vpn.puppet.net with processor Puppet::Reports::Store ➜ puppet git:(master) ✗ be ./bin/puppet apply --debug iclass.pp --strict error Debug: Runtime environment: puppet_version=6.16.0, ruby_version=2.3.8, run_mode=user, default_encoding=UTF-8 Debug: Loading external facts from /Users/melissa/.puppetlabs/opt/puppet/cache/facts.d . . . Debug: Facter: value for ipaddress6 is still nil Debug: Reset text domain to :production Error: Could not parse for environment production: Classes are not virtualizable (file: /Users/melissa/workdir/puppet/iclass.pp, line: 8, column: 3) on node pyewacket.vpn.puppet.net ``` Circling back to Eric's question, what's the benefit of removing this? How many people might this break? The warning was introduced in 4.10.2, so that's good if we do decide to make puppet fail if the user is trying to use a virtualized class. |