Issue #1472 has been updated by jamtur01. Status changed from Ready for Checkin to Closed
Pushed in commit:"98e79f8b7dbbdcb29c91b6099569e180bd8267c7" in branch 0.24.x ---------------------------------------- Bug #1472: Defined exported resource are not collected properly. http://projects.reductivelabs.com/issues/show/1472 Author: masterzen Status: Closed Priority: High Assigned to: jamtur01 Category: transactions Target version: 0.24.6 Complexity: Unknown Patch: None Affected version: 0.24.4 Keywords: exported collect resource define Hi, On puppet > 0.24.4 (including 0.24.5), I can't seem to collect "defined" resource. Native resource are collected fine. This doesn't work: <pre> # Non-working site.pp define deftest () { warning("DEFTEST ${fqdn} on ${name}") file { "${name}": content => "test" } } node "xen1.internal" { $part = "xen1" @@deftest { "/tmp/${part}": tag => "test" } Deftest <<| tag=='test' |>> } node "xen2.internal" { $part = "xen2" @@deftest { "/tmp/${part}": tag => "test" } Deftest <<| tag=='test' |>> } </pre> Proof: running manually on xen1.internal gives: <pre> info: Loading fact netmask info: Loading fact ldap_auth_bind_user info: Loading fact configured_ntp_servers info: Retrieving plugins info: Loading fact netmask info: Loading fact ldap_auth_bind_user info: Loading fact configured_ntp_servers info: Caching catalog at /var/lib/puppet/state/localconfig.yaml notice: Starting catalog run notice: Finished catalog run in 0.11 seconds </pre> localconfig.yaml doesn't contain anything about /tmp/xen1. Puppetmaster says: <pre> info: Expiring the node cache of xen1.internal info: Not using expired node for xen1.internal from cache; expired at Thu Jul 31 13:26:12 +0200 2008 info: Caching node for xen1.internal debug: Creating default schedules debug: /Settings[/etc/puppet/puppet.conf]/Settings[puppetmasterd]/File[/etc/puppet/manifests/site.pp]: Autorequiring File[/etc/puppet/manifests] debug: Finishing transaction 23539572950260 with 0 changes debug: Scope(Node[xen1.internal]): Collected 1 Deftest resource in 0.01 seconds warning: Scope(Deftest[/tmp/xen1]): DEFTEST xen1.internal on /tmp/xen1 debug: Scope(Node[xen1.internal]): Collected 0 Deftest resources in 0.00 seconds info: Stored catalog for xen1.internal in 0.35 seconds notice: Compiled catalog for xen1.internal in 0.50 seconds </pre> Which proved the puppetmaster has seen the collected resource. As the storeconfig database shows too: <pre> mysql> select * from resources where host_id=79 and exported is not null; +-------+-----------+---------+---------+----------------+----------+------+---------------------+ | id | title | restype | host_id | source_file_id | exported | line | updated_at | +-------+-----------+---------+---------+----------------+----------+------+---------------------+ | 51638 | /tmp/xen1 | File | 79 | 1 | 1 | 12 | 2008-07-31 13:27:12 | | 51639 | /tmp/xen1 | Deftest | 79 | 1 | 1 | 23 | 2008-07-31 13:27:12 | +-------+-----------+---------+---------+----------------+----------+------+---------------------+ 2 rows in set (0.01 sec) </pre> Let's play with xen2.internal now: <pre> info: Loading fact configured_ntp_servers info: Loading fact ldap_auth_bind_user info: Loading fact netmask info: Retrieving plugins info: Loading fact configured_ntp_servers info: Loading fact ldap_auth_bind_user info: Loading fact netmask info: Caching catalog at /var/lib/puppet/state/localconfig.yaml notice: Starting catalog run warning: //Node[xen2.internal]/Deftest[/tmp/xen1]/File[/tmp/xen1]/checksum: File /tmp/xen1 does not exist -- cannot checksum notice: //Node[xen2.internal]/Deftest[/tmp/xen1]/File[/tmp/xen1]/checksum: defined 'checksum' as '{md5}d9b5059238064ee18522f48e51730c21' notice: //Node[xen2.internal]/Deftest[/tmp/xen1]/File[/tmp/xen1]/content: created file with contents {md5}b23295cbdd57c2f30132fb656a6ddb17 notice: Finished catalog run in 0.41 seconds </pre> The file /tmp/xen1 has been created (ie it exported the resource), but not the /tmp/xen2 file. And the puppetmaster says: <pre> info: Expiring the node cache of xen2.internal info: Not using expired node for xen2.internal from cache; expired at Thu Jul 31 13:29:53 +0200 2008 info: Caching node for xen2.internal debug: Scope(Node[xen2.internal]): Collected 2 Deftest resources in 0.01 seconds warning: Scope(Deftest[/tmp/xen1]): DEFTEST xen2.internal on /tmp/xen1 warning: Scope(Deftest[/tmp/xen2]): DEFTEST xen2.internal on /tmp/xen2 debug: Scope(Node[xen2.internal]): Collected 0 Deftest resources in 0.00 seconds info: Stored catalog for xen2.internal in 0.36 seconds notice: Compiled catalog for xen2.internal in 0.40 seconds </pre> Definitely, the puppetmaster knows both exported resources. The database now contains: <pre> +-------+-----------+---------+---------+----------------+----------+------+---------------------+ | id | title | restype | host_id | source_file_id | exported | line | updated_at | +-------+-----------+---------+---------+----------------+----------+------+---------------------+ | 51638 | /tmp/xen1 | File | 79 | 1 | 1 | 12 | 2008-07-31 13:27:12 | | 51639 | /tmp/xen1 | Deftest | 79 | 1 | 1 | 23 | 2008-07-31 13:27:12 | | 51642 | /tmp/xen2 | File | 80 | 1 | 1 | 12 | 2008-07-31 13:30:53 | | 51643 | /tmp/xen2 | Deftest | 80 | 1 | 1 | 33 | 2008-07-31 13:30:53 | +-------+-----------+---------+---------+----------------+----------+------+---------------------+ </pre> Back to xen1, now puppet can see the /tmp/xen2 file: <pre> info: Loading fact netmask info: Loading fact ldap_auth_bind_user info: Loading fact configured_ntp_servers info: Retrieving plugins info: Loading fact netmask info: Loading fact ldap_auth_bind_user info: Loading fact configured_ntp_servers info: Caching catalog at /var/lib/puppet/state/localconfig.yaml notice: Starting catalog run warning: //Node[xen1.internal]/Deftest[/tmp/xen2]/File[/tmp/xen2]/checksum: File /tmp/xen2 does not exist -- cannot checksum notice: //Node[xen1.internal]/Deftest[/tmp/xen2]/File[/tmp/xen2]/checksum: defined 'checksum' as '{md5}2eba568f285d93e679f9d362dcf049b7' notice: //Node[xen1.internal]/Deftest[/tmp/xen2]/File[/tmp/xen2]/content: created file with contents {md5}572ac7bb156d4895b43e08ccc8ef8076 notice: Finished catalog run in 0.08 seconds </pre> Conclusion: it seems that each node cannot collect its own "defined" resources, but can still see the effects of the other nodes defined exported resources. Note1: if I use only file{} instead of defines in the manifest, it works fine. Note2: it used to work fine at least in 0.23.x, but the collection should have been written with the underlying type of the define (ie file{} instead of Deftest). I'm not sure at which version it started to not work, I noticed it first on 0.24.4. Note3: I noticed the issue on a more complex sample, which had another outcome (basically an already defined resource error). I tried to simplify the failing testcase but lost the hability to generate this error message, and discovered this issue. I think solving this bug will solve my original issue. Please see: http://groups.google.com/group/puppet-users/browse_thread/thread/d04dccd244340581 ---------------------------------------- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://reductivelabs.com/redmine/my/account --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to puppet-bugs@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en -~----------~----~----~----~------~----~------~--~---