From 377b5b4f18c64d547bb3d6e137a7639f7ccdbf64 Mon Sep 17 00:00:00 2001
From: "vkuklin@mirantis.com" <vkuklin@mirantis.com>
Date: Tue, 2 Oct 2012 19:37:04 +0400
Subject: [PATCH] fix ipv4 cidr range regexp

---
 lib/puppet/type/nova_network.rb     |  2 +-
 spec/unit/type/nova_network_spec.rb | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)
 create mode 100644 spec/unit/type/nova_network_spec.rb

diff --git a/lib/puppet/type/nova_network.rb b/lib/puppet/type/nova_network.rb
index 48a8ca75c..3a750e02e 100644
--- a/lib/puppet/type/nova_network.rb
+++ b/lib/puppet/type/nova_network.rb
@@ -10,7 +10,7 @@ Puppet::Type.newtype(:nova_network) do
   # that determine uniqueness
   newparam(:network, :namevar => true) do
     desc "IPv4 Network (ie, 192.168.1.0/24)"
-    newvalues(/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.0\/[0-9]{1,2}$/)
+    newvalues(/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(\d|[1-2]\d|3[0-2]))$/)
   end
 
   newparam(:label) do
diff --git a/spec/unit/type/nova_network_spec.rb b/spec/unit/type/nova_network_spec.rb
new file mode 100644
index 000000000..943716d0d
--- /dev/null
+++ b/spec/unit/type/nova_network_spec.rb
@@ -0,0 +1,11 @@
+require 'puppet'
+require 'puppet/type/nova_network'
+describe 'Puppet::Type.type(:nova_network)' do
+  it 'should reject an invalid ipv4 CIDR value' do
+    expect { Puppet::Type.type(:nova_network).new(:network => '192.168.1.0') }.to raise_error(Puppet::Error, /Invalid value/)
+    expect { Puppet::Type.type(:nova_network).new(:network => '::1/24') }.to raise_error(Puppet::Error, /Invalid value/)
+  end
+  it 'should accept a valid ipv4 CIDR value' do
+    Puppet::Type.type(:nova_network).new(:network => '192.168.1.0/24')
+  end
+end