---
src/app/controllers/pools_controller.rb | 13 +++++++++++--
src/app/models/deployable.rb | 11 +++++++++++
src/app/models/pool.rb | 18 +++++++++++++++++-
src/app/views/pools/_images.html.haml | 15 ++++++---------
4 files changed, 45 insertions(+), 12 deletions(-)
diff --git a/src/app/controllers/pools_controller.rb
b/src/app/controllers/pools_controller.rb
index 6eaa6f1..3312429 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -99,9 +99,18 @@ class PoolsController < ApplicationController
save_breadcrumb(pool_path(@pool, :viewstate => viewstate_id), @pool.name)
require_privilege(Privilege::VIEW, @pool)
@statistics = @pool.statistics(current_user)
- @view = filter_view? ? 'deployments/list' : 'deployments/pretty_view'
unless params[:details_tab]
- if params[:details_tab] == 'deployments'
+
+ unless params[:details_tab]
@view = filter_view? ? 'deployments/list' :
'deployments/pretty_view'
+ else
+ case params[:details_tab]
+ when 'images'
+ #this case covers fetching of unique images and constructing collection for
filter table
+ @header = [{:name => "catalog"}, {:name =>
"deployable"}, {:name => "image"}, {:name =>
"provider_image"}]
+ @catalog_images =
@pool.catalog_images_collection((a)pool.catalogs.list_for_user(current_user,
Privilege::VIEW))
+ when 'deployments'
+ @view = filter_view? ? 'deployments/list' :
'deployments/pretty_view'
+ end
end
#TODO add links to real data for history,properties,permissions
diff --git a/src/app/models/deployable.rb b/src/app/models/deployable.rb
index 5f4157e..be3ea1d 100644
--- a/src/app/models/deployable.rb
+++ b/src/app/models/deployable.rb
@@ -101,6 +101,17 @@ class Deployable < ActiveRecord::Base
uuids.map { |uuid| Aeolus::Image::Warehouse::Image.find(uuid) }
end
+ def fetch_unique_images
+ uuids = fetch_image_uuids || []
+ uniq_uuids = uuids.uniq
+ result_hash = {}
+ uniq_uuids.each do |uuid|
+ result_hash[uuid] = { :image => Aeolus::Image::Warehouse::Image.find(uuid),
:count => uuids.count(uuid)}
+ end
+ result_hash
+ end
+
+
def fetch_image_uuids
deployable = fetch_deployable
deployable.image_uuids unless deployable.nil?
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index 4604bd2..19caa60 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -166,7 +166,23 @@ class Pool < ActiveRecord::Base
permissions_pool_families.role_id in (:role_ids))"
end
-
+ def catalog_images_collection(catalog_list)
+ catalog_images = []
+ catalog_list.each do |catalog|
+ catalog.deployables.each do |deployable|
+ deployable.fetch_unique_images.each do |key,value|
+ row = {:catalog => catalog.name ,:deployable => deployable.name,
+ :image => "#{value[:image].name} #{value[:image].uuid}",
:provider_images =>[] }
+
+ value[:image].provider_images.each do |provider_image|
+ row[:provider_images] << I18n.t('pools.images.pushed', :uuid
=> provider_image.uuid, :provider => provider_image.provider_name)
+ end
+ value[:count].times {catalog_images << row}
+ end
+ end
+ end
+ catalog_images
+ end
private
def self.apply_search_filter(search)
diff --git a/src/app/views/pools/_images.html.haml
b/src/app/views/pools/_images.html.haml
index ff43d1d..f63a050 100644
--- a/src/app/views/pools/_images.html.haml
+++ b/src/app/views/pools/_images.html.haml
@@ -5,12 +5,9 @@
=image_tag 'flash_error_icon.png', :alt => 'Errors'
=flash[:error]
-else
- =filter_table(@header, @catalogs) do |catalog|
- - catalog.deployables.each do |deployable|
- - deployable.fetch_images.compact.each do |image|
- %tr
- %td= catalog.name
- %td= deployable.name
- %td= "#{image.name} (#{image.uuid})"
- - image.provider_images.each do |provider_image|
- %td= t('pools.images.pushed', :uuid => provider_image.uuid,
:provider => provider_image.provider_name)
+=filter_table(@header,@catalog_images) do |catalog_image|
+ %tr{:class => cycle('nostripe','stripe')}
+ %td=catalog_image[:catalog]
+ %td=catalog_image[:deployable]
+ %td=catalog_image[:image]
+ %td=catalog_image[:provider_images]
--
1.7.1