Puppet 3.5.1
ruby 1.8.7

Output is:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: 
undefined local variable or method `dns' for 
#<Puppet::Parser::Scope:0x7f5055562988> at 
/etc/puppet/modules/vivox/manifests/init.pp:69 on node 
plab5qamaster.vivox.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

On Monday, October 6, 2014 1:47:06 PM UTC-4, Sebastiaan van Steenis wrote:
>
> What version are you running? And what is the output if you try to call 
> the function as you have it now?
>
> On 06 Oct 2014, at 19:07, José Luis Ledesma <joseluis...@gmail.com 
> <javascript:>> wrote:
>
> Credits go to Nan Liu:
>
> If you are developing facts, it's much easier to just drop into IRB and 
> get everything working there rather than doing round trip debugging between 
> puppet and facter:
>
> irb(main):001:0> require 'facter'
>
> => true
>
> irb(main):002:0> Facter.value("hostname")
>
> => "demo-1"
>
> irb(main):003:0> Facter.value("hostname").split('-')
>
> => ["demo", "1"]
>
> irb(main):006:0>  Facter.add('network_geo') do
>
> irb(main):007:1*   setcode do
>
> irb(main):008:2*     hostname_array =  Facter.value(:hostname).split('-')
>
> irb(main):009:2>
>
> irb(main):010:2*     # debug info
>
> irb(main):011:2*     puts "My network is #{hostname_array}"
>
> irb(main):012:2>     hostname_array.first
>
> irb(main):013:2>   end
>
> irb(main):014:1> end
>
> irb(main):015:0> Facter.value(:network_geo)
>
> My network is ["demo", "1"]
>
> => "demo"
>
> If you run your existing fact in irb, you'll see the output is nil instead:
>
> Facter.value(:network_geo)
>
> My network is ["demo", "1"]
>
> => nil
>
> Hth,
> El 06/10/2014 18:07, "Mark Rosedale" <mros...@vivox.com <javascript:>> 
> escribió:
>
>> Still haven't been able to hunt down the cause of this issue. Is there a 
>> way to test the code with the puppet wrapping on the cli? 
>>
>> On Friday, October 3, 2014 3:41:57 PM UTC-4, Mark Rosedale wrote:
>>>
>>> Wil, 
>>>
>>> Thanks for the reply. I will look up the module functions you reference. 
>>> Though, part  of this was writing the custom function as a learning 
>>> exercise. 
>>>
>>> So if I have a file with the following in it and run it through ruby it 
>>> works. 
>>>
>>> require 'resolv'
>>> Resolv::DNS.open do |dns|
>>>   ress = dns.getresources "google.com", Resolv::DNS::Resource::IN::A
>>>   if ress.any?
>>>     puts dns.getaddress("google.com")
>>>   end
>>> end
>>>
>>> To reference Mike's question. What I found was that 'if ress.any?' works 
>>> and that is what allows me to protect against malformed host names or a 
>>> failure to find an A record. 
>>>
>>> So I've already chopped out the puppet stuff, and this code works. So 
>>> I'm thinking that it must be something with the require statement, where it 
>>> isn't finding the library I need. But I'm not sure what I can do from here. 
>>>
>>> On Friday, October 3, 2014 2:00:27 AM UTC-4, Wil Cooley wrote:
>>>>
>>>>
>>>> On Oct 2, 2014 10:23 AM, "Mark Rosedale" <mros...@vivox.com> wrote:
>>>> >
>>>> > I have the following custom function that I'm trying to write. 
>>>> >
>>>>
>>>> Sorry this isn't an answer to your question, but I recently published a 
>>>> module of functions wrapping the standard system get*by* functions (well, 
>>>> wrapping Ruby's interfaces to the standard system functions):  
>>>> https://forge.puppetlabs.com/wcooley/name_service_lookups
>>>>
>>>> This includes `gethostbyname` and `gethostbyaddr`; the main benefit 
>>>> over querying DNS directly is that it understands nsswitch, so /etc/hosts 
>>>> works and any other host database you might want to use.
>>>>
>>>> But assuming you want to implement this anyway an exercise in learning 
>>>> Ruby & Puppet extensions, you might start by removing all the Puppet stuff 
>>>> and just get the lookups working as a simple standalone Ruby script.
>>>>
>>>> Wil
>>>>
>>>> require 'resolv'
>>>> >
>>>> > module Puppet::Parser::Functions
>>>> >   newfunction(:getIpAddr, :type => :rvalue) do |arguments|
>>>> >     Resolv::DNS.open do |dns|
>>>> >       ress = dns.getresources(arguments[0], 
>>>> Resolv::DNS::Resource::IN::A)
>>>> >       if ress.any?
>>>> >         dns.getaddress(arguments[0])
>>>> >         #break
>>>> >       else
>>>> >         raise(Puppet::ParseError, "No valid A Record found for host 
>>>> #{aguments[0]}")
>>>> >       end
>>>> >     end
>>>> >     #return value
>>>> >   end
>>>> > end
>>>> >
>>>> > I'm getting the following error when I run this function. 
>>>> >
>>>> > Error: Could not retrieve catalog from remote server: Error 400 on 
>>>> SERVER: undefined local variable or method `dns' for 
>>>> #<Puppet::Parser::Scope:0x7f5054f07110> at 
>>>> >
>>>> >
>>>> > -- 
>>>> > You received this message because you are subscribed to the Google 
>>>> Groups "Puppet Users" group.
>>>> > To unsubscribe from this group and stop receiving emails from it, 
>>>> send an email to puppet-users...@googlegroups.com.
>>>> > To view this discussion on the web visit https://groups.google.com/d/
>>>> msgid/puppet-users/02de838d-6cb2-495a-883d-98fb15782df9%
>>>> 40googlegroups.com.
>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>  
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Puppet Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to puppet-users...@googlegroups.com <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/puppet-users/e2857e58-e52f-44ef-a30b-368fb6e4b9ae%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/puppet-users/e2857e58-e52f-44ef-a30b-368fb6e4b9ae%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to puppet-users...@googlegroups.com <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/puppet-users/CAF_B3dfyfjunB5UYZF2q577S-bL6QQPqCg2_TVL5p4ZekZf%3D9w%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/puppet-users/CAF_B3dfyfjunB5UYZF2q577S-bL6QQPqCg2_TVL5p4ZekZf%3D9w%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/35cd3cfa-7a2b-49e0-a280-0449d1350769%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to