Unfortunately, it does not work. That was the first thing I had tried
to try and reproduce the problem in ruby outside a puppet run.

Also, here are the ruby util modules for puppet in 0.25.4:

/opt/ruby-1.8.6-p287/lib/ruby/site_ruby/1.8/puppet/util
autoload
autoload.rb
backups.rb
cacher.rb
checksums.rb
classgen.rb
config_store.rb
constant_inflector.rb
diff.rb
docs.rb
errors.rb
execution.rb
feature.rb
file_locking.rb
fileparsing.rb
filetype.rb
graph.rb
inifile.rb
instance_loader.rb
ldap
ldap.rb
loadedfile.rb
logging.rb
log_paths.rb
log.rb
metaid.rb
methodhelper.rb
metric.rb
monkey_patches.rb
nagios_maker.rb
package.rb
pidlock.rb
posix.rb
provider_features.rb
pson.rb
queue
queue.rb
rails
rdoc
rdoc.rb
reference.rb
resource_template.rb
selinux.rb
settings
settings.rb
storage.rb
subclass_loader.rb
suidmanager.rb
tagging.rb
user_attr.rb
warnings.rb


Also, I did not see anything in the monkey_patches.rb file pertaining
to a yaml like patch only rdoc.:

module RDoc
    def self.caller(skip=nil)
        in_gem_wrapper = false
        Kernel.caller.reject { |call|
            in_gem_wrapper ||= call =~ /#{Regexp.escape $0}:\d+:in
`load'/
        }
    end
end

I think at this point we will probably upgrade puppet anyways so I
will just add "require puppet/util/yaml" once we have upgraded.

--
Derek

On Jul 11, 4:51 pm, Nigel Kersten <ni...@puppetlabs.com> wrote:
> On Mon, Jul 11, 2011 at 4:17 PM, Derek Tamsen <dtam...@gmail.com> wrote:
> > Thanks. Unfortunately, it seems I will need to wait until we upgrade
> > puppet as version 0.25.4 does not seem to have 'puppet/util/zaml'.
>
> Then I'm more confused :)
>
> does
>
> require 'puppet'
> require 'yaml'
>
> just do the right thing? If not, I'd post to the puppet-dev list and see if
> the more developer-focused crowd can give you a better answer for 0.25.4.
>
>
>
>
>
>
>
>
>
>
>
> > --
> > Derek
>
> > On Jul 11, 2:56 pm, Nigel Kersten <ni...@puppetlabs.com> wrote:
> > > On Mon, Jul 11, 2011 at 11:36 AM, Derek <dtam...@gmail.com> wrote:
> > > > Thanks for everyone's help. I figured out what the issue was over the
> > > > weekend. It appears that when the ruby script is run in a puppet run,
> > > > puppet loads the yaml dictionaries specific to puppet. However, when I
> > > > was testing the script in ruby I was not loading the yaml dictionaries
> > > > for puppet. This was causing my script to get a generic loaded yaml of
> > > > #<YAML::Object:0x2ada01f7cf00> instead of the correctly loaded yaml
> > > > #<Puppet::FileServing::Metadata:0x2ac7987b9c08>. When the dictionaries
> > > > are loaded for puppet it no longer has an "ivars" hash with content or
> > > > metadata. I just needed to do
> > > > "YAML.load(apitruthtag("content")).content" instead of
> > > > "YAML.load(apitruthtag("content")).ivars["content"].
>
> > > > However, because I am still not loading the dictionary outside of the
> > > > puppet run my script will not function correctly if just executed in
> > > > ruby. Does anybody know how to properly load the puppet yaml
> > > > dictionary outside of a puppet run?
>
> > > You should be able to load it as
>
> > > require 'puppet/util/zaml'
>
> > > and use ZAML instead of YAML.  That's the version of YAML we're vendoring
> > to
> > > fix a whole list of bugs we ran into.
>
> > > There's more complication going on in:
>
> > > lib/puppet/util/monkey_patches.rb
>
> > > showing how we monkey patch the various yaml methods on objects to
> > actually
> > > talk ZAML instead.
>
> > > > FYI:
> > > > The raw yaml data from puppet is:
>
> > > > --- !ruby/object:Puppet::FileServing::Content
> > > > content: |
> > > >  ---
> > > >  role:
> > > >    - base
> > > >  env:
> > > >    - dev
>
> > > > expiration: 2011-07-11 18:57:08.413941 +00:00
> > > > links: :manage
> > > > path: /etc/puppet/modules/truth/files/private/domain.inter/server01/
> > > > truth_tags.yml
> > > > stat_method: :lstat
>
> > > > --
> > > > Derek
>
> > > > On Jul 9, 3:03 pm, Ken Barber <k...@puppetlabs.com> wrote:
> > > > > So ...
>
> > > > > > servermd5 = YAML.load(apitruthtag("metadata")).ivars["checksum"] #
> > > > > > When executed from a puppet run I tells me that ivars is undefined.
>
> > > > > What does the output of apitruthtag("metadata") show you between each
> > > > > run in facter, irb and puppet? Can you output each to a file and
> > > > > analyze the difference?
>
> > > > > > irb, ruby, or facter:
> > > > > > yaml parsed http response = #<YAML::Object:0x2ada01f7cf00>
>
> > > > > > puppet run:
> > > > > > yaml parsed http response = #<Puppet::FileServing::Metadata:
> > > > > > 0x2ac7987b9c08>
> > > > > > with error:
>
> > > > > > undefined method `ivars' for #<Puppet::FileServing::Metadata:
> > > > > > 0x2ac7987152c0>
> > > > > > #<NoMethodError: undefined method `ivars' for
> > > > > > #<Puppet::FileServing::Metadata:0x2ac7987152c0>>
>
> > > > > So when you run it with all the Puppet libraries the YAML object is
> > > > > being serialized back into a Ruby object
> > Puppet::FileServing::Metadata
> > > > > ... I'm really curious what the raw YAML output looks like. This
> > > > > should only happen I think if the YAML output has meta information
> > > > > that matches that class type for example:
>
> > > > >  ---
> > > > > !ruby/object:Puppet::FileServing::Metadata {}
>
> > > > > I get the feeling the YAML you are getting back isn't what you were
> > > > > expecting and looking at the contents of the raw output might give a
> > > > > better clue as to why.
>
> > > > > ken.
>
> > > > > --
> > > > > "Join us for PuppetConf, September 22nd and 23rd in Portland, OR:
> > > >http://bit.ly/puppetconfsig";
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > Groups
> > > > "Puppet Users" group.
> > > > To post to this group, send email to puppet-users@googlegroups.com.
> > > > To unsubscribe from this group, send email to
> > > > puppet-users+unsubscr...@googlegroups.com.
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/puppet-users?hl=en.
>
> > > --
> > > Nigel Kersten
> > > Product Manager, Puppet Labs
> > > Twitter: @nigelkersten
>
> > > *Join us for **PuppetConf *<http://www.bit.ly/puppetconfsig>
> > > September 22nd and 23rd in Portland, Oregon, USA.
> > > *
> > > *
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Puppet Users" group.
> > To post to this group, send email to puppet-users@googlegroups.com.
> > To unsubscribe from this group, send email to
> > puppet-users+unsubscr...@googlegroups.com.
> > For more options, visit this group at
> >http://groups.google.com/group/puppet-users?hl=en.
>
> --
> Nigel Kersten
> Product Manager, Puppet Labs
> Twitter: @nigelkersten
>
> *Join us for **PuppetConf *<http://www.bit.ly/puppetconfsig>
> September 22nd and 23rd in Portland, Oregon, USA.
> *
> *

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to