[PATCH conductor 1/5] Removed provider_images_for_image_list from image model

jprovazn at redhat.com jprovazn at redhat.com
Wed Dec 14 14:09:20 UTC 2011


From: Jan Provaznik <jprovazn at redhat.com>

It's not needed anymore since aeolus-image-rubygem now uses 'query' when getting
objects from warehouse, so operation 'get me all provider images for a catalog'
is not so slow as before.
---
 src/app/controllers/pools_controller.rb |    7 -------
 src/app/models/image.rb                 |   26 --------------------------
 src/app/models/pool.rb                  |   20 --------------------
 src/app/views/pools/_images.html.haml   |    8 ++++----
 4 files changed, 4 insertions(+), 57 deletions(-)

diff --git a/src/app/controllers/pools_controller.rb b/src/app/controllers/pools_controller.rb
index 7e4503a..b9d4cd3 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -86,13 +86,6 @@ class PoolsController < ApplicationController
              {:name => "#{t'properties'}", :view => 'properties', :id => 'properties'},
              {:name => "#{t'catalog_images'}", :view => 'images', :id => 'images'}
     ]
-    if "images" == params[:details_tab]
-      begin
-        @map = @pool.provider_image_map
-      rescue
-        flash[:error] = t 'pools.flash.error.iwhd_unavailable' 
-      end
-    end
     add_permissions_tab(@pool)
 
     details_tab_name = params[:details_tab].blank? ? 'deployments' : params[:details_tab]
diff --git a/src/app/models/image.rb b/src/app/models/image.rb
index 346e5f2..053db9d 100644
--- a/src/app/models/image.rb
+++ b/src/app/models/image.rb
@@ -37,30 +37,4 @@ class Image < WarehouseModel
   def image_builds
     ImageBuild.find_all_by_image_uuid(self.uuid)
   end
-
-  # The iwhd API really isn't built for what we're trying to do.
-  # Here's a nutty workaround to not issues thousands of queries.
-  # images should be an array of Aeolus::Image::Warehouse::Image objects
-  # 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
-            end
-          end
-        end
-      return_objs
-    end
-  end
-
 end
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index 33f9b8b..287bc70 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -124,26 +124,6 @@ class Pool < ActiveRecord::Base
     result
   end
 
-  def provider_image_map
-    deployables = catalogs.collect{|c| c.deployables}.flatten
-    all_images = deployables.collect{|d| d.fetch_images}.flatten.uniq.compact
-    provider_images = Image.provider_images_for_image_list(all_images)
-    return_obj = {}
-    catalogs.each do |catalog|
-      return_obj[catalog] = {}
-      catalog.deployables.each do |deployable|
-        images = deployable.fetch_images.compact
-        unless images.empty?
-          return_obj[catalog][deployable] = {}
-          images.each do |image|
-            return_obj[catalog][deployable][image] = provider_images.nil? ? {} : provider_images[image.uuid]
-          end
-        end
-      end
-    end
-    return_obj
-  end
-
   PRESET_FILTERS_OPTIONS = [
     {:title => I18n.t("pools.preset_filters.enabled_pools"), :id => "enabled_pools", :query => where("pools.enabled" => true)},
     {:title => I18n.t("pools.preset_filters.with_pending_instances"), :id => "with_pending_instances", :query => includes(:deployments => :instances).where("instances.state" => "pending")},
diff --git a/src/app/views/pools/_images.html.haml b/src/app/views/pools/_images.html.haml
index 7c30233..c580d96 100644
--- a/src/app/views/pools/_images.html.haml
+++ b/src/app/views/pools/_images.html.haml
@@ -5,21 +5,21 @@
         =image_tag 'flash_error_icon.png', :alt => 'Errors'
         =flash[:error]
 -else
-  - @map.each_pair do |catalog, deployables|
+  - @pool.catalogs.each do |catalog|
     %div.catalog_deployments_and_images
       %h1
         = catalog.name
         = t('.catalog')
-      - deployables.each_pair do |deployable, images|
+      - catalog.deployables.each do |deployable|
         %h2
           = deployable.name
           = t('.deployable')
 
-        - images.each_pair do |image, provider_images|
+        - deployable.fetch_images.compact.each do |image|
           %h3
             = t('.image')
             = "#{image.name} (#{image.uuid})"
 
           %ul
-            - provider_images.each do |provider_image|
+            - image.provider_images.each do |provider_image|
               %li= t('.pushed', :uuid => provider_image.uuid, :provider => provider_image.provider_name)
-- 
1.7.6




More information about the aeolus-devel mailing list