I second that: having a few modules that collect useful "basic"
functionality for handling things like network stuff, facts for
various systems, and that sort of thing are great to see!

Daniel

On Thu, Feb 3, 2011 at 22:32, Eric Sorenson <[email protected]> wrote:
> I could see it being useful but +1 for a module -- in fact this is a point 
> I'd like to see more discusson on -- IMO plugins like this are way more 
> easily shared and reused on the forge than manifests are. Almost everyone's 
> manifest is going to differ just enough to prevent easy reuse, but it's super 
> easy for me to pull in an additional parser function, custom fact, or 
> type/provider and go to town with my own manifest. I just think the forge 
> (and puppet code reuse more generally) is very "write-only"; perhaps the 
> emphasis on manifests rather than code like this is what's holding it back.
>
> On Feb 3, 2011, at 10:19 PM, Luke Kanies wrote:
>
>> To me it seems a bit special-purpose and could be made available in a module 
>> pretty easily, which is what I'd recommend at this point.
>>
>> How many others would use this?
>>
>> On Feb 3, 2011, at 6:11 AM, Dean Wilson wrote:
>>
>>> This was asked about on the puppet-users lists recently so I thought I'd
>>> have a go at writing it. Is this something we'd want in the core?
>>>
>>> ---
>>> lib/puppet/parser/functions/ip_in_range.rb     |   15 +++++++++
>>> spec/unit/parser/functions/ip_in_range_spec.rb |   37 
>>> ++++++++++++++++++++++++
>>> 2 files changed, 52 insertions(+), 0 deletions(-)
>>> create mode 100644 lib/puppet/parser/functions/ip_in_range.rb
>>> create mode 100644 spec/unit/parser/functions/ip_in_range_spec.rb
>>>
>>> diff --git a/lib/puppet/parser/functions/ip_in_range.rb 
>>> b/lib/puppet/parser/functions/ip_in_range.rb
>>> new file mode 100644
>>> index 0000000..b762b45
>>> --- /dev/null
>>> +++ b/lib/puppet/parser/functions/ip_in_range.rb
>>> @@ -0,0 +1,15 @@
>>> +require 'ipaddr'
>>> +
>>> +Puppet::Parser::Functions::newfunction(:ip_in_range, :type => :rvalue, 
>>> :doc => "Return true if the ip is within the network range.") do |args|
>>> +
>>> +    raise Puppet::ParseError, "ip_in_range requires two arguments, ip and 
>>> range" unless args.length == 2
>>> +
>>> +    begin
>>> +        ip    = IPAddr.new( args[0] )
>>> +        range = IPAddr.new( args[1] )
>>> +    rescue ArgumentError => e
>>> +        raise Puppet::ParseError, e.to_s
>>> +    end
>>> +
>>> +    return range.include?( ip )
>>> +end
>>> diff --git a/spec/unit/parser/functions/ip_in_range_spec.rb 
>>> b/spec/unit/parser/functions/ip_in_range_spec.rb
>>> new file mode 100644
>>> index 0000000..01e2947
>>> --- /dev/null
>>> +++ b/spec/unit/parser/functions/ip_in_range_spec.rb
>>> @@ -0,0 +1,37 @@
>>> +#! /usr/bin/env ruby
>>> +
>>> +require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
>>> +
>>> +describe "ip_in_range function" do
>>> +
>>> +  before :each do
>>> +    @scope = Puppet::Parser::Scope.new
>>> +  end
>>> +
>>> +  it "should exist" do
>>> +    Puppet::Parser::Functions.function("ip_in_range").should == 
>>> "function_ip_in_range"
>>> +  end
>>> +
>>> +  it "should raise a ParseError if there are less than 2 arguments" do
>>> +    lambda { @scope.function_ip_in_range([]) }.should( 
>>> raise_error(Puppet::ParseError))
>>> +  end
>>> +
>>> +  it "should return true when an ip is in the range" do
>>> +    @scope.function_ip_in_range( ["192.168.100.12", "192.168.100.0/24"] 
>>> ).should be_true
>>> +  end
>>> +
>>> +  it "should return false when an ip is not in the range" do
>>> +    @scope.function_ip_in_range( ["10.10.10.10", "192.168.100.0/24"] 
>>> ).should be_false
>>> +  end
>>> +
>>> +  it "should raise a ParseError when given an invalid IP address" do
>>> +    lambda { @scope.function_ip_in_range( ["a.b.c.d", "192.168.100.0/24"] 
>>> ) }.should( raise_error(Puppet::ParseError))
>>> +  end
>>> +
>>> +  it "should raise a ParseError when given an invalid IP range" do
>>> +    lambda { @scope.function_ip_in_range( ["192.168.100.12", 
>>> "192.168.100.0/CC"] ) }.should( raise_error(Puppet::ParseError))
>>> +    lambda { @scope.function_ip_in_range( ["192.168.100.12", "192.168/24"] 
>>> )       }.should( raise_error(Puppet::ParseError))
>>> +    lambda { @scope.function_ip_in_range( ["192.168.100.12", 
>>> "aaa.168.100.0/CC"] ) }.should( raise_error(Puppet::ParseError))
>>> +  end
>>> +
>>> +end
>>> --
>>> 1.7.1
>>>
>>>
>>> --
>>> Dean Wilson
>>> http://www.unixdaemon.net       @unixdaemon
>>> http://www.puppetcookbook.com   @puppetcookbook
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "Puppet Developers" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to 
>>> [email protected].
>>> For more options, visit this group at 
>>> http://groups.google.com/group/puppet-dev?hl=en.
>>>
>>
>>
>> --
>> 'Tis better to be silent and be thought a fool, than to speak and
>> remove all doubt.              --Abraham Lincoln
>> ---------------------------------------------------------------------
>> Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199
>>
>>
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Puppet Developers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group at 
>> http://groups.google.com/group/puppet-dev?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Puppet Developers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/puppet-dev?hl=en.
>
>



-- 
⎋ Puppet Labs Developer – http://puppetlabs.com
✉ Daniel Pittman <[email protected]>
✆ Contact me via gtalk, email, or phone: +1 (877) 575-9775
♲ Made with 100 percent post-consumer electrons

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to