From: Jozef Zigmund <jzigmund(a)redhat.com>
---
src/app/controllers/deployments_controller.rb | 70 ++++++++-----------
src/app/models/catalog_entry.rb | 2 +-
src/app/models/deployment.rb | 6 +-
src/app/views/deployments/_launch_new.html.haml | 6 --
src/app/views/deployments/_overview.html.haml | 10 +--
.../deployments/launch_from_catalog.html.haml | 20 +++---
.../views/deployments/launch_time_params.html.haml | 1 -
src/config/locales/en.yml | 11 +++-
src/features/deployment.feature | 1 +
9 files changed, 57 insertions(+), 70 deletions(-)
diff --git a/src/app/controllers/deployments_controller.rb
b/src/app/controllers/deployments_controller.rb
index 6362e95..43896de 100644
--- a/src/app/controllers/deployments_controller.rb
+++ b/src/app/controllers/deployments_controller.rb
@@ -58,12 +58,13 @@ class DeploymentsController < ApplicationController
def launch_time_params
+ @catalog_entry = CatalogEntry.find(params[:catalog_entry_id])
@deployment = Deployment.new(params[:deployment])
@pool = @deployment.pool
require_privilege(Privilege::CREATE, Deployment, @pool)
init_new_deployment_attrs
- unless @deployment.accessible_and_valid_deployable_xml?(@deployable_url)
+ unless !((a)deployable_xml.nil?) &&
@deployment.valid_deployable_xml?(@deployable_xml)
render 'launch_new' and return
end
@@ -78,16 +79,15 @@ class DeploymentsController < ApplicationController
end
def overview
+ @catalog_entry = CatalogEntry.find(params[:catalog_entry_id])
@deployment = Deployment.new(params[:deployment])
@pool = @deployment.pool
require_privilege(Privilege::CREATE, Deployment, @pool)
init_new_deployment_attrs
-
- @launch_parameters_encoded = Base64.encode64(ActiveSupport::JSON.encode(
- @deployment.launch_parameters))
+ @launch_parameters_encoded =
Base64.encode64(ActiveSupport::JSON.encode(@deployment.launch_parameters))
respond_to do |format|
- if @deployment.accessible_and_valid_deployable_xml?(@deployable_url)
+ if !((a)deployable_xml.nil?) &&
@deployment.valid_deployable_xml?(@deployable_xml)
check_assemblies_for_errors
@additional_quota = count_additional_quota(@deployment)
@@ -113,10 +113,11 @@ class DeploymentsController < ApplicationController
@pool = @deployment.pool
require_privilege(Privilege::CREATE, Deployment, @pool)
init_new_deployment_attrs
+ @deployment.deployable_xml = @deployable_xml if @deployable_xml
+ @catalog_entry = CatalogEntry.find(params[:catalog_entry_id])
@deployment.owner = current_user
load_assemblies_services
-
if params.delete(:commit) == 'back'
view = launch_parameters_encoded.blank? ? 'launch_new' :
'launch_time_params'
render view and return
@@ -129,9 +130,9 @@ class DeploymentsController < ApplicationController
flash[:notice] = t "deployments.flash.notice.launched"
else
flash[:error] = {
- :summary =>
t("deployments.flash.error.failed_to_launch_assemblies"),
- :failures => status[:errors],
- :successes => status[:successes]
+ :summary =>
t("deployments.flash.error.failed_to_launch_assemblies"),
+ :failures => status[:errors],
+ :successes => status[:successes]
}
end
format.html { redirect_to deployment_path(@deployment) }
@@ -173,7 +174,7 @@ class DeploymentsController < ApplicationController
#{:name => 'Services', :view => @view, :id =>
'services'},
#{:name => 'History', :view => 'history', :id =>
'history'},
{:name => t('properties'), :view => 'properties', :id
=> 'properties'}
- #{:name => 'Permissions', :view => 'permissions', :id
=> 'permissions'}
+ #{:name => 'Permissions', :view => 'permissions', :id =>
'permissions'}
]
add_permissions_tab(@deployment)
details_tab_name = params[:details_tab].blank? ? 'instances' :
params[:details_tab]
@@ -321,26 +322,28 @@ class DeploymentsController < ApplicationController
@catalog_entries = @catalog.catalog_entries.paginate(:page => params[:page] || 1,
:per_page => 6)
require_privilege(Privilege::VIEW, @catalog)
end
+
private
+
def load_deployments
@deployments = Deployment.paginate(:page => params[:page] || 1,
- :order => (sort_column(Deployment) +' '+ sort_direction)
+ :order => (sort_column(Deployment) +'
'+ sort_direction)
)
@deployments_header = [
- { :name => 'checkbox', :class => 'checkbox', :sortable =>
false },
- { :name => '', :class => 'alert', :sortable => false },
- { :name => t("deployments.deployment_name"), :sortable => false },
- { :name => t("pools.index.deployed_on"), :sortable => false },
- { :name => t("deployables.index.base_deployable"), :sortable =>
false },
- { :name => t("instances.instances"), :class => 'center',
:sortable => false },
- { :name => t("pools.pool"), :sortable => false },
- { :name => t("pools.index.owner"), :sortable => false },
- { :name => t("providers.provider"), :sortable => false }
+ { :name => 'checkbox', :class => 'checkbox', :sortable
=> false },
+ { :name => '', :class => 'alert', :sortable => false },
+ { :name => t("deployments.deployment_name"), :sortable => false
},
+ { :name => t("pools.index.deployed_on"), :sortable => false },
+ { :name => t("deployables.index.base_deployable"), :sortable =>
false },
+ { :name => t("instances.instances"), :class => 'center',
:sortable => false },
+ { :name => t("pools.pool"), :sortable => false },
+ { :name => t("pools.index.owner"), :sortable => false },
+ { :name => t("providers.provider"), :sortable => false }
]
@pools = Pool.list_for_user(current_user, Privilege::CREATE, :target_type =>
Deployment)
@deployments = Deployment.all(:include => :owner,
- :conditions => {:pool_id => @pools},
- :order => (sort_column(Deployment) +' '+
sort_direction)
+ :conditions => {:pool_id => @pools},
+ :order => (sort_column(Deployment) +' '+
sort_direction)
)
end
@@ -358,34 +361,21 @@ class DeploymentsController < ApplicationController
errors = @deployment.check_assemblies_matches(current_user)
unless errors.empty?
flash[:error] = {
- :summary => t("deployments.flash.error.not_launched"),
- :failures => errors
+ :summary => t("deployments.flash.error.not_launched"),
+ :failures => errors
}
end
end
def init_new_deployment_attrs
@catalog_entries = CatalogEntry.list_for_user(current_user,
Privilege::USE).select{|ce| ce.catalog.pool == @pool}
- @deployable_url = get_deployable_url
@pools = Pool.list_for_user(current_user, Privilege::CREATE, :target_type =>
Deployment)
+ @deployable_xml = params[:catalog_entry_id] ?
CatalogEntry.find(params[:catalog_entry_id]).xml : nil
@realms = FrontendRealm.all
@hardware_profiles = HardwareProfile.all(
:include => :architecture,
:conditions => {:provider_id => nil}
- )
- end
-
-
- def get_deployable_url
- if !params.has_key?(:catalog_entry_id)
- return nil
- elsif params[:catalog_entry_id].to_s == 'other'
- return params[:deployable_url]
- else
- c_entry = CatalogEntry.find(params[:catalog_entry_id])
- require_privilege(Privilege::USE, c_entry)
- return c_entry.url
- end
+ )
end
def load_assemblies_services
@@ -397,4 +387,4 @@ class DeploymentsController < ApplicationController
end
end
-end
+end
\ No newline at end of file
diff --git a/src/app/models/catalog_entry.rb b/src/app/models/catalog_entry.rb
index 34749d0..6c3cc3a 100644
--- a/src/app/models/catalog_entry.rb
+++ b/src/app/models/catalog_entry.rb
@@ -57,7 +57,7 @@ class CatalogEntry < ActiveRecord::Base
# Fetch the deployable contained at :url
def fetch_deployable
begin
- DeployableXML.new(DeployableXML.import_xml_from_url(url))
+ DeployableXML.new(xml)
rescue
return nil
end
diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
index c5279ad..f2407fd 100644
--- a/src/app/models/deployment.rb
+++ b/src/app/models/deployment.rb
@@ -279,13 +279,13 @@ class Deployment < ActiveRecord::Base
:order => (order_field || 'name') +' '+ (order_dir
|| 'asc'))
end
- def accessible_and_valid_deployable_xml?(url)
+ def valid_deployable_xml?(xml)
begin
- self.deployable_xml = DeployableXML.import_xml_from_url(url)
+ self.deployable_xml = DeployableXML.new(xml)
deployable_xml.validate!
true
rescue
- errors.add(:base, "failed to get the deployable definition:
#{$!.message}")
+ errors.add(:base, I18n.t("deployments.errors.not_valid_deployable_xml",
:msg => "#{$!.message}"))
false
end
end
diff --git a/src/app/views/deployments/_launch_new.html.haml
b/src/app/views/deployments/_launch_new.html.haml
index b0e537a..4c08a29 100644
--- a/src/app/views/deployments/_launch_new.html.haml
+++ b/src/app/views/deployments/_launch_new.html.haml
@@ -32,12 +32,6 @@
%label{:for => 'catalog_entry_id'}
= t('catalog_entries.index.catalog_entry')
= select_tag :catalog_entry_id,
options_for_select([[t('.load_definition'), t('.other')]] +
@catalog_entries.map {|d| [d.name, d.id]}, params[:catalog_entry_id])
- %p#deployable-url-section
- %label{:for => 'deployable_url'}
- = t('deployables.index.deployable_url')
- %span
- = t('deployables.index.deployable_url_subtext')
- = text_field_tag :deployable_url, params[:deployable_url], :class =>
'long'
%fieldset
%p
diff --git a/src/app/views/deployments/_overview.html.haml
b/src/app/views/deployments/_overview.html.haml
index 724df3b..bb75d4b 100644
--- a/src/app/views/deployments/_overview.html.haml
+++ b/src/app/views/deployments/_overview.html.haml
@@ -9,9 +9,6 @@
= hidden_field :deployment, :frontend_realm_id
= hidden_field_tag :launch_parameters_encoded, @launch_parameters_encoded
= hidden_field_tag :catalog_entry_id, params[:catalog_entry_id]
- = hidden_field_tag :deployable_url, params[:deployable_url]
- -# FIXME: Passing chunks of XML around in hidden form fields doesn't feel right
- = hidden_field :deployment, :deployable_xml
%section.content-section.deployable_details
%header.confirmation
@@ -22,10 +19,9 @@
%h3= t '.description'
%p= @deployment.deployable_xml.description
- %h3= t('.deployable_uri')
- %a{ :id => 'deployable-xml-link', :href => @deployable_url}
- = @deployable_url
- ⇒
+ %h3= t('.deployable_xml')
+ =link_to @catalog_entry.xml_filename,
catalog_catalog_entry_path((a)catalog_entry.catalog, @catalog_entry.id, :deployable_xml
=> true)
+ ⇒
%h3= t('.image_ids')
diff --git a/src/app/views/deployments/launch_from_catalog.html.haml
b/src/app/views/deployments/launch_from_catalog.html.haml
index 8b47cbd..24230a5 100644
--- a/src/app/views/deployments/launch_from_catalog.html.haml
+++ b/src/app/views/deployments/launch_from_catalog.html.haml
@@ -6,14 +6,14 @@
.corner
%section.content-section
.align-center
- %strong= t("deployments.launch_from_catalog.hint", :pool =>
@catalog.pool.name)
+ %strong= t(".hint", :pool => @catalog.pool.name)
%ul.catalog_pretty
- @catalog_entries.each do |entry|
%li.collapse_entity
.summary
.controls
- = link_to
t("deplyments.launch_from_catalog.details"),"#", :class =>
"collapse"
- = button_to t("deployments.launch_from_catalog.select"),
launch_time_params_deployments_path(:deployment => { :name => entry.name, :pool_id
=> @catalog.pool.id }, :catalog_entry_id => entry.id ), :class=> "button
pill"
+ = link_to t(".details"),"#", :class =>
"collapse"
+ = button_to t(".select"),
launch_time_params_deployments_path(:deployment => { :name => entry.name, :pool_id
=> @catalog.pool.id }, :catalog_entry_id => entry.id ), :class=> "button
pill"
.info
%h2= entry.name
%p= entry.description
@@ -22,13 +22,13 @@
%table
%tr
%th
- %strong Image ID
- %th Profile
- %th HDD
- %th RAM
- %th ARCH
+ %strong= t'.image_id'
+ %th=t'.profile'
+ %th=t'.hdd'
+ %th=t'.ram'
+ %th=t'.arch'
%th
- %strong Deployable URI
+ %strong=t'.deployable_xml'
-entry.fetch_images.each do |image|
%tr
%td
@@ -37,7 +37,7 @@
%td= entry.hw_profile_for_image(image.id).storage
%td= entry.hw_profile_for_image(image.id).memory
%td= entry.hw_profile_for_image(image.id).architecture
- %td= entry.url
+ %td= link_to entry.xml_filename,
catalog_catalog_entry_path(entry.catalog, entry.id, :deployable_xml => true)
.align-center
%div= will_paginate @catalog_entries
diff --git a/src/app/views/deployments/launch_time_params.html.haml
b/src/app/views/deployments/launch_time_params.html.haml
index 5ed76db..ed571c7 100644
--- a/src/app/views/deployments/launch_time_params.html.haml
+++ b/src/app/views/deployments/launch_time_params.html.haml
@@ -11,7 +11,6 @@
= hidden_field :deployment, :pool_id
= hidden_field :deployment, :frontend_realm_id
= hidden_field_tag :catalog_entry_id, params[:catalog_entry_id]
- = hidden_field_tag :deployable_url, params[:deployable_url]
%section.services
%header
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index 5a45677..26b80d6 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -172,7 +172,7 @@ en:
confirmation:
Are you sure you wish to deploy "%{deployment}" to the %{pool} Pool?
Doing
so will utilize %{quota} of your overall deployment quota.
- deployable_uri: Deployable URI
+ deployable_xml: Deployable XML
description: Description
image_ids: Image IDs
launch: Launch
@@ -181,6 +181,12 @@ en:
hint: Choose a deployable to launch in the "%{pool}" pool
details: Details
select: Select
+ image_id: Image ID
+ profile: Profile
+ hdd: HDD
+ ram: RAM
+ arch: ARCH
+ deployable_xml: Deployable XML
new:
launch: Launch this deployment
deployable_definition: Deployable definition
@@ -199,7 +205,7 @@ en:
already_in_use: That name is already in use
name_available: Name available
next: Next
- load_definition: Load definition from URL
+ load_definition: Load definition from XML
other: other
operation:
operational_status: Operational status of
@@ -248,6 +254,7 @@ en:
config_server_connection: 'Cannot connect to the config server'
stop_invalid_action: "stop is an invalid action."
cannot_stop: "stop cannot be performed on this instance."
+ not_valid_deployable_xml: "seems to be not valid deployable XML: %{msg}"
instances:
instances: Instances
instance: Instance
diff --git a/src/features/deployment.feature b/src/features/deployment.feature
index 0df9549..b7b28ab 100644
--- a/src/features/deployment.feature
+++ b/src/features/deployment.feature
@@ -35,6 +35,7 @@ Feature: Manage Deployments
When I am viewing the pool "mockpool"
And I follow "new_deployment_button"
Then I should see "New Deployment"
+ And show me the page
When I fill in "deployable_url" with
"http://localhost/deployables/deployable1.xml"
When I fill in "deployment_name" with "mynewdeployment"
When I press "next_button"
--
1.7.6.4