---
src/app/models/catalog_entry.rb | 7 ++++++-
src/app/models/image.rb | 33 +++++++++++++++++++--------------
src/features/pool.feature | 2 +-
3 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/src/app/models/catalog_entry.rb b/src/app/models/catalog_entry.rb
index bb99332..c0a10b1 100644
--- a/src/app/models/catalog_entry.rb
+++ b/src/app/models/catalog_entry.rb
@@ -60,6 +60,7 @@ class CatalogEntry < ActiveRecord::Base
begin
DeployableXML.new(DeployableXML.import_xml_from_url(url))
rescue
+ Rails.logger.error "failed to build DeployableXML object from url: #{url} :
#{$!.message}"
return nil
end
end
@@ -69,7 +70,11 @@ class CatalogEntry < ActiveRecord::Base
images = []
unless fetch_image_uuids.nil?
fetch_image_uuids.each do |uuid|
- images << Aeolus::Image::Warehouse::Image.find(uuid)
+ begin
+ images << Aeolus::Image::Warehouse::Image.find(uuid)
+ rescue
+ next
+ end
end
return images.compact.uniq
end
diff --git a/src/app/models/image.rb b/src/app/models/image.rb
index 45a6094..06c977c 100644
--- a/src/app/models/image.rb
+++ b/src/app/models/image.rb
@@ -46,22 +46,27 @@ class Image < WarehouseModel
# Please don't shoot me for this!
def self.provider_images_for_image_list(images)
unless images.nil?
- # Fetch all of these, but only once
- provider_images = Aeolus::Image::Warehouse::ProviderImage.all
- target_images = Aeolus::Image::Warehouse::TargetImage.all
- builds = Aeolus::Image::Warehouse::ImageBuild.all
- return_objs = {}
- images.each do |image|
- _builds = builds.select{|b| b.instance_variable_get('@image') ==
image.uuid}
- _builds.each do |build|
- _target_images = target_images.select{|ti|
ti.instance_variable_get('@build') == build.uuid}
- _target_images.each do |target_image|
- _provider_images = provider_images.select{|pi|
pi.instance_variable_get('@target_image') == target_image.uuid}
- return_objs[image.uuid] = _provider_images
+ begin
+ # Fetch all of these, but only once
+ provider_images = Aeolus::Image::Warehouse::ProviderImage.all
+ target_images = Aeolus::Image::Warehouse::TargetImage.all
+ builds = Aeolus::Image::Warehouse::ImageBuild.all
+ return_objs = {}
+ images.each do |image|
+ _builds = builds.select{|b| b.instance_variable_get('@image') ==
image.uuid}
+ _builds.each do |build|
+ _target_images = target_images.select{|ti|
ti.instance_variable_get('@build') == build.uuid}
+ _target_images.each do |target_image|
+ _provider_images = provider_images.select{|pi|
pi.instance_variable_get('@target_image') == target_image.uuid}
+ return_objs[image.uuid] = _provider_images
+ end
end
end
- end
- return_objs
+ return_objs
+ rescue
+ Rails.logger.error "failed to retrieve images: #{$!.message}"
+ nil
+ end
end
end
diff --git a/src/features/pool.feature b/src/features/pool.feature
index 91f331d..4c96b80 100644
--- a/src/features/pool.feature
+++ b/src/features/pool.feature
@@ -203,7 +203,7 @@ Feature: Manage Pools
Scenario: Select Catalog Images on pool detail page
Given a pool "mockpool" exists
And "mockpool" has catalog "mockcatalog"
- And "mockcatalog" has catalog_entry "mockcatalogentry"
+ And a catalog entry "mockcatalogentry" exists for "mockcatalog"
catalog
When I am viewing the pool "mockpool"
And I follow link with ID "details_images"
Then I should see "mockcatalog" within "#tab"
--
1.7.6.4