It was failing when one category (like week, day, hour) was missing.

Signed-off-by: Brice Figureau <[email protected]>
---
 lib/puppet/util/network_device/cisco/facts.rb     |    2 +-
 spec/unit/util/network_device/cisco/facts_spec.rb |    4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/puppet/util/network_device/cisco/facts.rb 
b/lib/puppet/util/network_device/cisco/facts.rb
index 40e2b37..8bba02b 100644
--- a/lib/puppet/util/network_device/cisco/facts.rb
+++ b/lib/puppet/util/network_device/cisco/facts.rb
@@ -63,7 +63,7 @@ class Puppet::Util::NetworkDevice::Cisco::Facts
   end
 
   def uptime_to_seconds(uptime)
-    captures = (uptime.match /^(?:(?:(?:(?:(\d+) years?,)?\s*(\d+) 
weeks?,)?\s*(\d+) days?,)?\s*(\d+) hours?,)?\s*(\d+) minutes?$/).captures
+    captures = (uptime.match /^(?:(\d+) years?,)?\s*(?:(\d+) 
weeks?,)?\s*(?:(\d+) days?,)?\s*(?:(\d+) hours?,)?\s*(\d+) minutes?$/).captures
     seconds = captures.zip([31536000, 604800, 86400, 3600, 60]).inject(0) do 
|total, (x,y)|
       total + (x.nil? ? 0 : x.to_i * y)
     end
diff --git a/spec/unit/util/network_device/cisco/facts_spec.rb 
b/spec/unit/util/network_device/cisco/facts_spec.rb
index 66842fd..7d1eb80 100755
--- a/spec/unit/util/network_device/cisco/facts_spec.rb
+++ b/spec/unit/util/network_device/cisco/facts_spec.rb
@@ -31,7 +31,9 @@ eos
 "Switch uptime is 1 year, 12 weeks, 6 days, 22 hours, 32 minutes" => { 
:hostname => "Switch", :uptime => "1 year, 12 weeks, 6 days, 22 hours, 32 
minutes", :uptime_seconds => 39393120, :uptime_days => 455 },
 "c2950 uptime is 3 weeks, 1 day, 23 hours, 36 minutes" => { :hostname => 
"c2950", :uptime => "3 weeks, 1 day, 23 hours, 36 minutes", :uptime_days => 22, 
:uptime_seconds =>  1985760},
 "router uptime is 5 weeks, 1 day, 3 hours, 30 minutes" => { :hostname => 
"router", :uptime => "5 weeks, 1 day, 3 hours, 30 minutes", :uptime_days => 36, 
:uptime_seconds => 3123000 },
-"c2950 uptime is 1 minute" => { :hostname => "c2950", :uptime => "1 minute", 
:uptime_days => 0, :uptime_seconds => 60 }
+"c2950 uptime is 1 minute" => { :hostname => "c2950", :uptime => "1 minute", 
:uptime_days => 0, :uptime_seconds => 60 },
+"c2950 uptime is 20 weeks, 6 minutes" => { :hostname => "c2950", :uptime=>"20 
weeks, 6 minutes", :uptime_seconds=>12096360, :uptime_days=>140 },
+"c2950 uptime is 2 years, 20 weeks, 6 minutes" => { :hostname => "c2950", 
:uptime=>"2 years, 20 weeks, 6 minutes", :uptime_seconds=>75168360, 
:uptime_days=>870 }
   }.each do |ver, expected|
     it "should parse show ver output for device uptime facts" do
       @transport.stubs(:command).with("sh ver").returns(<<eos)
-- 
1.7.5.1

-- 
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