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.