From c6d2bf9e8d213e0aaf7da7e5a6f253d5e649d931 Mon Sep 17 00:00:00 2001 From: Brian Hartsock Date: Thu, 31 Jan 2013 20:08:49 -0500 Subject: [PATCH] [rackspace|dns] fix issue in zones.find where results with no links throw exception --- lib/fog/rackspace/models/dns/zones.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/fog/rackspace/models/dns/zones.rb b/lib/fog/rackspace/models/dns/zones.rb index 21b070b89..b9524cf5b 100644 --- a/lib/fog/rackspace/models/dns/zones.rb +++ b/lib/fog/rackspace/models/dns/zones.rb @@ -32,14 +32,16 @@ module Fog subset = dup.all subset.each_zone_this_page {|f| yield f} - while !body['links'].select{|l| l['rel'] == 'next'}.empty? - url = body['links'].select{|l| l['rel'] == 'next'}.first['href'] - query = url.match(/\?(.+)/) - parsed = CGI.parse($1) - - body = service.list_domains(:offset => parsed['offset'], :limit => parsed['limit']).body - subset = dup.all(:offset => parsed['offset'], :limit => parsed['limit']) - subset.each_zone_this_page {|f| yield f} + if body.has_key?('links') + while !body['links'].select{|l| l['rel'] == 'next'}.empty? + url = body['links'].select{|l| l['rel'] == 'next'}.first['href'] + query = url.match(/\?(.+)/) + parsed = CGI.parse($1) + + body = service.list_domains(:offset => parsed['offset'], :limit => parsed['limit']).body + subset = dup.all(:offset => parsed['offset'], :limit => parsed['limit']) + subset.each_zone_this_page {|f| yield f} + end end self end