From: Imre Farkas <ifarkas(a)redhat.com>
---
aeolus-conductor.spec.in | 3 +-
src/app/controllers/deployables_controller.rb | 27 ++++++----
.../views/deployables/_image_status.html.mustache | 16 ++++++
src/app/views/deployables/show.html.haml | 49 ++------------------
src/public/javascripts/backbone/views.js | 17 +++++--
5 files changed, 51 insertions(+), 61 deletions(-)
create mode 100644 src/app/views/deployables/_image_status.html.mustache
diff --git a/aeolus-conductor.spec.in b/aeolus-conductor.spec.in
index 3a9511c..b9bb080 100644
--- a/aeolus-conductor.spec.in
+++ b/aeolus-conductor.spec.in
@@ -196,7 +196,8 @@ haml="app/views/hardware_profiles app/views/realm_mappings \
app/views/api/builds app/views/api/provider_images \
app/views/api/target_images app/views/api/entrypoint \
app/views/api/environments"
-mustache="app/views/instances app/views/pools app/views/deployments"
+mustache="app/views/instances app/views/pools app/views/deployments \
+ app/views/deployables"
html="public"
ico="public"
jpg="public/images public/stylesheets/images"
diff --git a/src/app/controllers/deployables_controller.rb
b/src/app/controllers/deployables_controller.rb
index 543cb53..2336c39 100644
--- a/src/app/controllers/deployables_controller.rb
+++ b/src/app/controllers/deployables_controller.rb
@@ -80,25 +80,30 @@ class DeployablesController < ApplicationController
flash.now[:error] = @deployable_errors unless @deployable_errors.empty?
if @missing_images.empty?
- @build_results = {}
+ @image_status = []
@pushed_count = 0
- ProviderAccount.includes(:provider,
:pool_families).where('providers.enabled' => true, 'pool_families.id'
=> @deployable.catalogs.first.pool_family.id).each do |account|
- type = account.provider.provider_type.deltacloud_driver
- @build_results[type] ||= []
- status = @deployable.build_status(images, account)
- @pushed_count += 1 if (status == :pushed)
- @build_results[type] << {
- :account => account.label,
- :provider => account.provider.name,
- :status => status,
+
+
@catalog.pool_family.provider_accounts.includes(:provider).where('providers.enabled'
=> true).each do |provider_account|
+ deltacloud_driver = provider_account.provider.provider_type.deltacloud_driver
+ build_status = @deployable.build_status(images, provider_account)
+ @pushed_count += 1 if (build_status == :pushed)
+
+ @image_status << {
+ :deltacloud_driver => deltacloud_driver,
+ :provider_account_label => provider_account.label,
+ :provider_name => provider_account.provider.name,
+ :build_status => build_status,
+ :translated_build_status =>
t("deployables.show.build_statuses_descriptions.#{build_status}")
}
+
+ @image_status.sort_by{ |image_status_for_account|
image_status_for_account[:deltacloud_driver] }
end
end
respond_to do |format|
format.html
format.json do
- render :json => { :build_results => @build_results }
+ render :json => { :image_status => @image_status }
end
end
diff --git a/src/app/views/deployables/_image_status.html.mustache
b/src/app/views/deployables/_image_status.html.mustache
new file mode 100644
index 0000000..4628f0a
--- /dev/null
+++ b/src/app/views/deployables/_image_status.html.mustache
@@ -0,0 +1,16 @@
+<li>
+ <div class="summary">
+ <div class="info">
+ <h2>{{deltacloud_driver}}</h2>
+ <span>{{provider_name}}</span>
+ |
+ <span>{{provider_account_label}}</span>
+ </div>
+ <div class="controls">
+ <div class="build_status">
+ <span>{{translated_build_status}}</span>
+ <div class="build_status_icon {{build_status}}"></div>
+ </div>
+ </div>
+ </div>
+</li>
diff --git a/src/app/views/deployables/show.html.haml
b/src/app/views/deployables/show.html.haml
index a79573a..c1d0ea4 100644
--- a/src/app/views/deployables/show.html.haml
+++ b/src/app/views/deployables/show.html.haml
@@ -60,19 +60,8 @@
.content
%ul#providers-list.catalog_pretty
- - @build_results.each do |provider_type, results|
- - results.each do |result|
- %li
- .summary
- .info
- %h2= provider_type
- %span= result[:provider]
- |
- %span= result[:account]
- .controls
- .build_status
- %span=
t(".build_statuses_descriptions.#{result[:status]}")
- %div{:class => "build_status_icon #{result[:status]}"}
+ - @image_status.each do |image_status_for_account|
+ = render :partial => 'image_status', :mustache =>
image_status_for_account
- else
%header
%h2.build= t('.build_status')
@@ -128,35 +117,5 @@
});
});
-%script#deployableBuildsTemplate{ :type => 'text/x-jquery-tmpl' }
- :plain
- {{each(provider_type, results) build_results}}
- {{each(index, result) results}}
- <li>
- <div class="summary">
- <div class="info">
- <h2>${provider_type}</h2>
- <span>${result['provider']}</span>
- |
- <span>${result['account']}</span>
- </div>
- <div class="controls">
- <div class="build_status">
- {{if result['status'] == 'not_built'}}
-
<span>#{t('deployables.show.build_statuses_descriptions.not_built')}</span>
- {{else result['status'] == 'building'}}
-
<span>#{t('deployables.show.build_statuses_descriptions.building')}</span>
- {{else result['status'] == 'not_pushed'}}
-
<span>#{t('deployables.show.build_statuses_descriptions.not_pushed')}</span>
- {{else result['status'] == 'pushing'}}
-
<span>#{t('deployables.show.build_statuses_descriptions.pushing')}</span>
- {{else result['status'] == 'pushed'}}
-
<span>#{t('deployables.show.build_statuses_descriptions.pushed')}</span>
- {{/if}}
- <div class="build_status_icon
${result['status']}"></div>
- </div>
- </div>
- </div>
- </li>
- {{/each}}
- {{/each}}
+%script#imageStatusTemplate{ :type => 'text/html' }
+ = render :partial => 'image_status'
diff --git a/src/public/javascripts/backbone/views.js
b/src/public/javascripts/backbone/views.js
index 055202a..0231673 100644
--- a/src/public/javascripts/backbone/views.js
+++ b/src/public/javascripts/backbone/views.js
@@ -200,16 +200,25 @@ Conductor.Views.DeployablesShow = Backbone.View.extend({
el: '#content',
render: function() {
+ var $template = this.$('#imageStatusTemplate');
+ if($template.length === 0) return;
+
var $builds = this.$('ul#providers-list');
if($builds.length === 0) return;
-
$builds.empty();
- $('#deployableBuildsTemplate').tmpl(this.model.toJSON()).appendTo($builds);
+
+ var imageStatus = this.model.get('image_status');
+ var imageStatusHtml = '';
+ $.each(imageStatus, function(imageStatusIndex, imageStatusForAccount) {
+ imageStatusHtml += Mustache.to_html($template.html(), imageStatusForAccount);
+ });
+
+ $builds.html(imageStatusHtml);
// get values of all build results
- var build_results_values =
_.flatten(_.values(this.model.get("build_results")));
+ var build_results_values =
_.flatten(_.values(this.model.get("image_status")));
var enable_launch_button = _.any(build_results_values, function(build_results){
- return build_results.status === "pushed";
+ return build_results.build_status === "pushed";
});
// toggle "disabled" class
--
1.7.6.5