From: Jan Provaznik jprovazn@redhat.com
This is first try to cleanup deploayble/catalog_entries rename. TODO: rename locale messages (will be probably separate patch). --- src/app/controllers/catalog_entries_controller.rb | 13 +-- src/app/controllers/catalogs_controller.rb | 2 +- src/app/controllers/deployables_controller.rb | 117 ++++++++++---------- src/app/controllers/images_controller.rb | 2 +- src/app/models/catalog_entry.rb | 15 --- src/app/models/deployable.rb | 20 +++- src/app/views/catalogs/show.html.haml | 28 +++--- src/app/views/deployables/_form.html.haml | 35 +++--- src/app/views/deployables/_from_url.html.haml | 21 ++-- src/app/views/deployables/_list.html.haml | 14 +- .../views/deployables/_new_from_image.html.haml | 14 +- src/app/views/deployables/_upload.html.haml | 29 +++--- src/app/views/deployables/edit.html.haml | 8 +- src/app/views/deployables/show.html.haml | 14 +- src/config/locales/en.yml | 3 + src/features/deployables.feature | 18 ++-- src/features/step_definitions/deployable_steps.rb | 12 +-- .../controllers/deployables_controller_spec.rb | 2 +- 18 files changed, 179 insertions(+), 188 deletions(-)
diff --git a/src/app/controllers/catalog_entries_controller.rb b/src/app/controllers/catalog_entries_controller.rb index 1d454eb..8f8d9ea 100644 --- a/src/app/controllers/catalog_entries_controller.rb +++ b/src/app/controllers/catalog_entries_controller.rb @@ -24,10 +24,10 @@ class CatalogEntriesController < ApplicationController require_privilege(Privilege::MODIFY, @catalog_entry.deployable)
if @catalog_entry.save - redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :notice => t('catalog_entries.flash.notice.added') + redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry.deployable), :notice => t('catalog_entries.flash.notice.added') else flash[:warning] = t('catalog_entries.flash.warning.failed') - redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry.deployable.catalog_entries.first) + redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry.deployable) end end
@@ -39,14 +39,7 @@ class CatalogEntriesController < ApplicationController require_privilege(Privilege::MODIFY, @catalog_entry.catalog) require_privilege(Privilege::MODIFY, @catalog_entry.deployable) @catalog_entry.destroy - - if deployable.catalog_entries.empty? - redirect_to catalog_path(catalog), :notice => t('catalog_entries.flash.notice.deleted') - else - catalog_entry_to_nagigate = deployable.catalog_entries.first - redirect_to catalog_deployable_path(catalog_entry_to_nagigate.catalog, catalog_entry_to_nagigate), :notice => t('catalog_entries.flash.notice.deleted') - end - + redirect_to catalog_deployable_path(catalog, deployable), :notice => t('catalog_entries.flash.notice.deleted') end
end diff --git a/src/app/controllers/catalogs_controller.rb b/src/app/controllers/catalogs_controller.rb index 6957d1c..8a3d6cd 100644 --- a/src/app/controllers/catalogs_controller.rb +++ b/src/app/controllers/catalogs_controller.rb @@ -39,7 +39,7 @@ class CatalogsController < ApplicationController
def show @catalog = Catalog.find(params[:id]) - @catalog_entries = @catalog.catalog_entries.apply_filters(:preset_filter_id => params[:catalog_entries_preset_filter], :search_filter => params[:catalog_entries_search]) + @deployables = @catalog.deployables.apply_filters(:preset_filter_id => params[:catalog_entries_preset_filter], :search_filter => params[:catalog_entries_search]) require_privilege(Privilege::VIEW, @catalog) save_breadcrumb(catalogs_path(@catalog), @catalog.name) @header = [ diff --git a/src/app/controllers/deployables_controller.rb b/src/app/controllers/deployables_controller.rb index c5e7a4e..a1d7f9b 100644 --- a/src/app/controllers/deployables_controller.rb +++ b/src/app/controllers/deployables_controller.rb @@ -23,21 +23,21 @@ class DeployablesController < ApplicationController def index clear_breadcrumbs save_breadcrumb(catalog_deployables_path(:viewstate => @viewstate ? @viewstate.id : nil)) - @deployables = Deployable.list_for_user(current_user, Privilege::VIEW) + @catalog = Catalog.find(params[:catalog_id]) + @deployables = @catalog.deployables @catalog_entries = @deployables.collect { |d| d.catalog_entries.first } #@catalog_entries = CatalogEntry.list_for_user(current_user, Privilege::VIEW).apply_filters(:preset_filter_id => params[:catalog_entries_preset_filter], :search_filter => params[:catalog_entries_search]) - @catalog = @catalog_entries.first.catalog unless @catalog_entries.empty? set_header end
def new - @catalog_entry = params[:catalog_entry].nil? ? CatalogEntry.new() : CatalogEntry.new(params[:catalog_entry]) - @catalog_entry.deployable = Deployable.new unless @catalog_entry.deployable + @deployable = Deployable.new(params[:deployable]) require_privilege(Privilege::CREATE, Deployable) if params[:create_from_image] @image = Aeolus::Image::Warehouse::Image.find(params[:create_from_image]) @hw_profiles = HardwareProfile.frontend.list_for_user(current_user, Privilege::VIEW) - @catalog_entry.deployable.name = @image.name + @deployable.name = @image.name + @selected_catalogs = params[:catalog_id].to_a load_catalogs else @catalog = Catalog.find(params[:catalog_id]) @@ -51,13 +51,14 @@ class DeployablesController < ApplicationController end
def show - @catalog_entry = CatalogEntry.find(params[:id]) - require_privilege(Privilege::VIEW, @catalog_entry.deployable) - save_breadcrumb(catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), @catalog_entry.deployable.name) + @deployable = Deployable.find(params[:id]) + @catalog = Catalog.find(params[:catalog_id]) + require_privilege(Privilege::VIEW, @deployable) + save_breadcrumb(catalog_deployable_path(@catalog, @deployable), @deployable.name) @providers = Provider.all - @catalogs_options = Catalog.all.map {|c| [c.name, c.id] unless c == @catalog_entry.catalog}.compact - add_permissions_inline(@catalog_entry.deployable) - @image_details = @catalog_entry.deployable.get_image_details + @catalogs_options = Catalog.all.map {|c| [c.name, c.id] unless c == @catalog}.compact + add_permissions_inline(@deployable) + @image_details = @deployable.get_image_details @image_details.each do |assembly| assembly.keys.each do |key| flash[:error] = assembly[key] if key.to_s =~ /^error\w+/ @@ -71,69 +72,70 @@ class DeployablesController < ApplicationController return end
- - @catalog_entry = CatalogEntry.new(params[:catalog_entry]) - if params[:create_from_image].present? - @catalog = @catalog_entry.catalog - @catalog_entry.deployable = Deployable.new unless @catalog_entry.deployable - else - @catalog = Catalog.find(params[:catalog_id]) - @catalog_entry.catalog = @catalog - end - require_privilege(Privilege::MODIFY, @catalog) require_privilege(Privilege::CREATE, Deployable) - @catalog_entry.deployable.owner = current_user + @deployable = Deployable.new(params[:deployable]) + @selected_catalogs = Catalog.find(params[:catalog_id]).to_a + @deployable.owner = current_user
if params.has_key? :url xml = import_xml_from_url(params[:url]) unless xml.nil? #store xml_filename for url (i.e. url ends to: foo || foo.xml) - @catalog_entry.deployable.xml_filename = File.basename(URI.parse(params[:url]).path) - @catalog_entry.deployable.xml = xml + @deployable.xml_filename = File.basename(URI.parse(params[:url]).path) + @deployable.xml = xml end elsif params[:create_from_image].present? hw_profile = HardwareProfile.frontend.find(params[:hardware_profile]) require_privilege(Privilege::VIEW, hw_profile) - @catalog_entry.deployable.set_from_image(params[:create_from_image], hw_profile) + @deployable.set_from_image(params[:create_from_image], hw_profile) end
- if @catalog_entry.save - flash[:notice] = t "catalog_entries.flash.notice.added" - if params[:edit_xml] - redirect_to edit_catalog_deployable_path @catalog_entry.catalog.id, @catalog_entry.id, :edit_xml =>true - else - redirect_to catalog_deployables_path(@catalog) + begin + raise t("deployables.flash.error.no_catalog") if @selected_catalogs.empty? + @deployable.transaction do + @deployable.save! + @selected_catalogs.each do |catalog| + require_privilege(Privilege::MODIFY, catalog) + CatalogEntry.create!(:catalog_id => catalog.id, :deployable_id => @deployable.id) + end + flash[:notice] = t "catalog_entries.flash.notice.added" + if params[:edit_xml] + redirect_to edit_catalog_deployable_path @selected_catalogs.first, @deployable.id, :edit_xml =>true + else + redirect_to catalog_deployables_path(@selected_catalogs.first) + end end - else - flash[:warning]= t('catalog_entries.flash.warning.not_valid') if @catalog_entry.errors.has_key?(:xml) + rescue => e + flash[:warning]= t('deployables.flash.warning.failed', :message => e.message) + flash[:warning]= t('catalog_entries.flash.warning.not_valid') if @deployable.errors.has_key?(:xml) if params[:create_from_image].present? load_catalogs @image = Aeolus::Image::Warehouse::Image.find(params[:create_from_image]) @hw_profiles = HardwareProfile.frontend.list_for_user(current_user, Privilege::VIEW) - @catalog_entry.deployable.name = @image.name + @deployable.name = @image.name else + @catalog = @selected_catalogs.first params.delete(:edit_xml) if params[:edit_xml] - @form_option = params[:catalog_entry].has_key?(:xml) ? 'upload' : 'from_url' - @form_option = params[:catalog_entry][:deployable].has_key?(:xml) ? 'upload' : 'from_url' + @form_option = params[:deployable].has_key?(:xml) ? 'upload' : 'from_url' end render :new end end
def edit - @catalog_entry = CatalogEntry.find(params[:id]) - require_privilege(Privilege::MODIFY, @catalog_entry.deployable) - @catalog = @catalog_entry.catalog + @deployable = Deployable.find(params[:id]) + require_privilege(Privilege::MODIFY, @deployable) + @catalog = Catalog.find(params[:catalog_id]) end
def update - @catalog_entry = CatalogEntry.find(params[:id]) - require_privilege(Privilege::MODIFY, @catalog_entry.deployable) - params[:catalog_entry][:deployable].delete(:owner_id) if params[:catalog_entry] and params[:catalog_entry][:deployable] + @deployable = Deployable.find(params[:id]) + require_privilege(Privilege::MODIFY, @deployable) + params[:deployable].delete(:owner_id) if params[:deployable]
- if @catalog_entry.update_attributes(params[:catalog_entry]) + if @deployable.update_attributes(params[:deployable]) flash[:notice] = t"catalog_entries.flash.notice.updated" - redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry) + redirect_to catalog_deployable_path(params[:catalog_id], @deployable) else render :action => 'edit' end @@ -141,28 +143,25 @@ class DeployablesController < ApplicationController
def multi_destroy @catalog = nil - CatalogEntry.find(params[:catalog_entries_selected]).to_a.each do |d| - require_privilege(Privilege::MODIFY, d.catalog) - require_privilege(Privilege::MODIFY, d.deployable) - @catalog = d.catalog - # Don't do this when we're managing deployables independently - d.deployable.destroy + Deployable.find(params[:deployables_selected]).to_a.each do |d| + # TODO: delete only in catalogs where I have permission to + #require_privilege(Privilege::MODIFY, d.catalog) + require_privilege(Privilege::MODIFY, d) + #@catalog = d.catalog d.destroy end - redirect_to catalog_path(@catalog) + redirect_to catalog_path(params[:catalog_id]) end
def destroy - catalog_entry = CatalogEntry.find(params[:id]) - require_privilege(Privilege::MODIFY, catalog_entry.catalog) - require_privilege(Privilege::MODIFY, catalog_entry.deployable) - @catalog = catalog_entry.catalog - # Don't do this when we're managing deployables independently - catalog_entry.deployable.destroy - catalog_entry.destroy + deployable = Deployable.find(params[:id]) + # TODO: delete only in catalogs where I have permission to + #require_privilege(Privilege::MODIFY, catalog_entry.catalog) + require_privilege(Privilege::MODIFY, deployable) + deployable.destroy
respond_to do |format| - format.html { redirect_to catalog_path(@catalog) } + format.html { redirect_to catalog_path(params[:catalog_id]) } end end
diff --git a/src/app/controllers/images_controller.rb b/src/app/controllers/images_controller.rb index 3560640..e951059 100644 --- a/src/app/controllers/images_controller.rb +++ b/src/app/controllers/images_controller.rb @@ -172,7 +172,7 @@ class ImagesController < ApplicationController }) flash.now[:error] = t('images.flash.notice.created') if params[:make_deployable] - redirect_to new_catalog_entry_path(:create_from_image => @image.id) + redirect_to new_deployable_path(:create_from_image => @image.id) else redirect_to image_path(@image.id) end diff --git a/src/app/models/catalog_entry.rb b/src/app/models/catalog_entry.rb index 21a8b9b..2ea3a3c 100644 --- a/src/app/models/catalog_entry.rb +++ b/src/app/models/catalog_entry.rb @@ -29,10 +29,6 @@ #
class CatalogEntry < ActiveRecord::Base - class << self - include CommonFilterMethods - end - belongs_to :catalog belongs_to :deployable
@@ -43,15 +39,4 @@ class CatalogEntry < ActiveRecord::Base
# This probably goes away once we separate catalog entry creation from deployables accepts_nested_attributes_for :deployable - PRESET_FILTERS_OPTIONS = [] - - private - - def self.apply_search_filter(search) - if search - where("name ILIKE :search", :search => "%#{search}%") - else - scoped - end - end end diff --git a/src/app/models/deployable.rb b/src/app/models/deployable.rb index be553e7..2a568ac 100644 --- a/src/app/models/deployable.rb +++ b/src/app/models/deployable.rb @@ -17,6 +17,11 @@ # also available at http://www.gnu.org/copyleft/gpl.html.
class Deployable < ActiveRecord::Base + class << self + include CommonFilterMethods + end + + include PermissionedObject
validates_presence_of :name @@ -29,12 +34,14 @@ class Deployable < ActiveRecord::Base has_many :permissions, :as => :permission_object, :dependent => :destroy, :include => [:role], :order => "permissions.id ASC" - has_many :catalog_entries + has_many :catalog_entries, :dependent => :destroy has_many :catalogs, :through => :catalog_entries
belongs_to :owner, :class_name => "User", :foreign_key => "owner_id" after_create "assign_owner_roles(owner)"
+ PRESET_FILTERS_OPTIONS = [] + def valid_deployable_xml? deployable_xml = DeployableXML.new(xml) unless deployable_xml.validate! @@ -135,4 +142,15 @@ class Deployable < ActiveRecord::Base #returned value [{:name => 'assembly1',{:hwp => {...}}, {:error => "msg"}, {assembly3} ..] result_array end + + private + + def self.apply_search_filter(search) + if search + where("name ILIKE :search", :search => "%#{search}%") + else + scoped + end + end + end diff --git a/src/app/views/catalogs/show.html.haml b/src/app/views/catalogs/show.html.haml index 1dd4259..b4433f8 100644 --- a/src/app/views/catalogs/show.html.haml +++ b/src/app/views/catalogs/show.html.haml @@ -21,33 +21,33 @@ .content - content_for :form_header do %li= restful_submit_tag t("delete"), "destroy", multi_destroy_catalog_deployables_path(@catalog), 'DELETE', :id => 'delete_button', :class => 'button danger' - %li= link_to t("catalog_entries.new_catalog_entry"), new_catalog_deployable_path(@catalog), :class => 'button', :id => 'new_catalog_entry_button' + %li= link_to t("catalog_entries.new_catalog_entry"), new_catalog_deployable_path(@catalog), :class => 'button', :id => 'new_deployablesutton'
- content_for :filter_controls do %li - = label_tag :catalog_entries_preset_filter, t('filter_table.viewing') + = label_tag :deployables_preset_filter, t('filter_table.viewing') = hidden_field_tag :current_path, request.fullpath - = select_tag(:catalog_entries_preset_filter, preset_filters_options_for_select(CatalogEntry::PRESET_FILTERS_OPTIONS, params[:catalog_entries_preset_filter]), :include_blank => t("catalog_entries.preset_filters.all_catalog_entries"), :disabled => true) - = restful_submit_tag t("filter_table.apply_filters"), "filter", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_catalog_entries_preset_filter' - %span.label.badge.dark= @catalog_entries.count + = select_tag(:deployables_preset_filter, preset_filters_options_for_select(Deployable::PRESET_FILTERS_OPTIONS, params[:deployables_preset_filter]), :include_blank => t("catalog_entries.preset_filters.all_catalog_entries"), :disabled => true) + = restful_submit_tag t("filter_table.apply_filters"), "filter", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_deployables_preset_filter' + %span.label.badge.dark= @deployables.count %li.table-search-filter - = text_field_tag :catalog_entries_search, params[:catalog_entries_search], :placeholder => t("filter_table.search") - = restful_submit_tag "", "search", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_catalog_entries_search' + = text_field_tag :deployables_search, params[:deployables_search], :placeholder => t("filter_table.search") + = restful_submit_tag "", "search", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_deployables_search'
:javascript $(document).ready(function(){ - $("#apply_catalog_entries_preset_filter").hide(); - $("#catalog_entries_preset_filter").change(function() { - $("#apply_catalog_entries_preset_filter").click(); + $("#apply_deployables_preset_filter").hide(); + $("#deployables_preset_filter").change(function() { + $("#apply_deployables_preset_filter").click(); }); });
- = filter_table(@header, @catalog_entries) do |catalog_entry| + = filter_table(@header, @deployables) do |deployable| %tr{:class => cycle('nostripe','stripe')} %td{:class => 'checkbox'} - selected = params[:select] == 'all' - = check_box_tag "catalog_entries_selected[]", catalog_entry.id, selected, :id => "catalog_entry_checkbox_#{catalog_entry.id}" + = check_box_tag "deployables_selected[]", deployable.id, selected, :id => "deployable_checkbox_#{deployable.id}" %td - = link_to catalog_entry.deployable.name, catalog_deployable_path(@catalog, catalog_entry) + = link_to deployable.name, catalog_deployable_path(@catalog, deployable) %td - = link_to catalog_entry.deployable.xml_filename, catalog_deployable_path(@catalog, catalog_entry, :deployable_xml => true) + = link_to deployable.xml_filename, catalog_deployable_path(@catalog, deployable, :deployable_xml => true) diff --git a/src/app/views/deployables/_form.html.haml b/src/app/views/deployables/_form.html.haml index d638684..fa6ec32 100644 --- a/src/app/views/deployables/_form.html.haml +++ b/src/app/views/deployables/_form.html.haml @@ -1,26 +1,25 @@ -- if @catalog_entry.errors.any? - = render 'layouts/error_messages', :object => @catalog_entry +- if @deployable.errors.any? + = render 'layouts/error_messages', :object => @deployable %fieldset - - if params[:edit_xml] - = form.fields_for :deployable, @catalog_entry.deployable do |deployable_fields| + = form_for @deployable do |form| + - if params[:edit_xml] %p - = deployable_fields.label :xml, t('.deployable_xml') - = deployable_fields.text_area :xml, :class => 'long' - - else - %p - = form.label :catalog_id, t('catalog_entries.form.catalog') - = @catalog ? @catalog.name : @catalog_entry.catalog.name - .clear - = form.fields_for :deployable, @catalog_entry.deployable do |deployable_fields| + = form.label :xml, t('.deployable_xml') + = form.text_area :xml, :class => 'long' + - else %p - = deployable_fields.label :name, t('catalog_entries.index.name') - = deployable_fields.text_field :name, :class => 'em long' + = label_tag :catalog_id, t('catalog_entries.form.catalog') + = @catalog.name + .clear %p - = deployable_fields.label :description, t('.description') - = deployable_fields.text_area :description, :class => 'long' + = form.label :name, t('catalog_entries.index.name') + = form.text_field :name, :class => 'em long' %p - = deployable_fields.label :xml, t('.deployable_xml') - = link_to t("catalog_entries.properties.edit_deployable_xml"), edit_catalog_deployable_path(@catalog_entry.catalog.id, @catalog_entry.id, :edit_xml=>true) + = form.label :description, t('.description') + = form.text_area :description, :class => 'long' + %p + = form.label :xml, t('.deployable_xml') + = link_to t("catalog_entries.properties.edit_deployable_xml"), edit_catalog_deployable_path(@catalog.id, @deployable.id, :edit_xml=>true)
%fieldset.options = link_to t('cancel'), catalog_path(@catalog), :class => 'button danger' diff --git a/src/app/views/deployables/_from_url.html.haml b/src/app/views/deployables/_from_url.html.haml index 22b0099..d351ecb 100644 --- a/src/app/views/deployables/_from_url.html.haml +++ b/src/app/views/deployables/_from_url.html.haml @@ -1,19 +1,18 @@ -= form_for @catalog_entry, :url => catalog_deployables_path(@catalog), :html => {:class => 'generic', :multipart => true } do |form| - - if @catalog_entry.errors.any? - = render 'layouts/error_messages', :object => @catalog_entry += form_for @deployable, :url => catalog_deployables_path(@catalog), :html => {:class => 'generic', :multipart => true } do |form| + - if @deployable.errors.any? + = render 'layouts/error_messages', :object => @deployable %fieldset %p = form.label :catalog_id, t('catalog_entries.form.catalog') %span.text_instead_input= @catalog.name .clear - =form.fields_for :deployable, @catalog_entry.deployable do |deployable_fields| - %fieldset - %p - = deployable_fields.label :name, t('catalog_entries.index.name') - = deployable_fields.text_field :name, :class => 'em long' - %p - = deployable_fields.label :description, t('catalog_entries.form.description') - = deployable_fields.text_area :description, :class => 'long' + %fieldset + %p + = form.label :name, t('catalog_entries.index.name') + = form.text_field :name, :class => 'em long' + %p + = form.label :description, t('catalog_entries.form.description') + = form.text_area :description, :class => 'long' %fieldset %p = label_tag :url, t('catalog_entries.form.deployable_xml_url') diff --git a/src/app/views/deployables/_list.html.haml b/src/app/views/deployables/_list.html.haml index 117e636..55bf664 100644 --- a/src/app/views/deployables/_list.html.haml +++ b/src/app/views/deployables/_list.html.haml @@ -10,9 +10,9 @@ %li = label_tag :catalog_entries_preset_filter, t('filter_table.viewing') = hidden_field_tag :current_path, request.fullpath - = select_tag(:catalog_entries_preset_filter, preset_filters_options_for_select(CatalogEntry::PRESET_FILTERS_OPTIONS, params[:catalog_entries_preset_filter]), :include_blank => t("catalog_entries.preset_filters.all_catalog_entries"), :disabled => true) + = select_tag(:catalog_entries_preset_filter, preset_filters_options_for_select(Deployable::PRESET_FILTERS_OPTIONS, params[:catalog_entries_preset_filter]), :include_blank => t("catalog_entries.preset_filters.all_catalog_entries"), :disabled => true) = restful_submit_tag t("filter_table.apply_filters"), "filter", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_catalog_entries_preset_filter' - %span.label.badge.dark= @catalog_entries.count + %span.label.badge.dark= @deployables.count %li.table-search-filter = text_field_tag :catalog_entries_search, params[:catalog_entries_search], :placeholder => t("filter_table.search") = restful_submit_tag "", "search", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_catalog_entries_search' @@ -25,14 +25,14 @@ }); });
- = filter_table(@header, @catalog_entries) do |catalog_entry| + = filter_table(@header, @deployables) do |deployable| %tr{:class => cycle('nostripe','stripe')} %td{:class => 'checkbox'} - selected = params[:select] == 'all' - = check_box_tag "catalog_entries_selected[]", catalog_entry.id, selected, :id => "catalog_entry_checkbox_#{catalog_entry.id}" + = check_box_tag "deployables_selected[]", deployable.id, selected, :id => "deployable_checkbox_#{deployable.id}" %td - = link_to catalog_entry.deployable.name, catalog_deployable_path(@catalog, catalog_entry.id) + = link_to deployable.name, catalog_deployable_path(@catalog, deployable.id) %td - = link_to catalog_entry.catalog.name, catalog_entry.catalog + = link_to @catalog.name, @catalog %td - = link_to catalog_entry.deployable.xml_filename, catalog_deployable_path(@catalog, catalog_entry.id) + = link_to deployable.xml_filename, catalog_deployable_path(@catalog, deployable.id) diff --git a/src/app/views/deployables/_new_from_image.html.haml b/src/app/views/deployables/_new_from_image.html.haml index f546698..2e1b285 100644 --- a/src/app/views/deployables/_new_from_image.html.haml +++ b/src/app/views/deployables/_new_from_image.html.haml @@ -1,12 +1,12 @@ %header.admin-page-header - %h1.deployables= t('.catalog_entry_name', :name => @catalog_entry.deployable.name) + %h1.deployables= t('.catalog_entry_name', :name => @deployable.name)
%section.admin-content-section .content.buildpush - = form_for @catalog_entry, :html => {:class => 'generic'} do |form| + = form_for @deployable, :html => {:class => 'generic'} do |form| = hidden_field_tag :create_from_image, params[:create_from_image] - - if @catalog_entry.errors.any? - = render 'layouts/error_messages', :object => @catalog_entry + - if @deployable.errors.any? + = render 'layouts/error_messages', :object => @deployable .lefted.new-catalog-entry-from-image %h2= t('.title') %p= t('.description', :name => @image.name) @@ -17,8 +17,8 @@ .clear %div = form.label :catalog_id, t('catalog_entries.form.catalog') - = form.select :catalog_id, @catalogs.collect{|c| [c.name, c.id]} - %span.text_instead_input= "Catalog1" + /= form.select :catalog_id, @catalogs.collect{|c| [c.name, c.id]} + %span.text_instead_input= @selected_catalogs.empty? ? t('deployables.form.none') : @selected_catalogs.count > 1 ? t('deployables.form.multiple') : @selected_catalogs.first.name %span.catalog_link   %div.catalog_list @@ -26,7 +26,7 @@ - @catalogs.each do |catalog| %li.catalog .catalog_with_checkbox - = check_box_tag :catalog_ids + = check_box_tag 'catalog_id[]', catalog.id, @selected_catalogs.any?{|c| c.id == catalog.id} = catalog.name .clear .clear diff --git a/src/app/views/deployables/_upload.html.haml b/src/app/views/deployables/_upload.html.haml index 475d492..6afaa8f 100644 --- a/src/app/views/deployables/_upload.html.haml +++ b/src/app/views/deployables/_upload.html.haml @@ -1,22 +1,21 @@ -= form_for @catalog_entry, :url => catalog_deployables_path(@catalog), :html => {:class => 'generic', :multipart => true } do |form| - - if @catalog_entry.errors.any? - = render 'layouts/error_messages', :object => @catalog_entry += form_for @deployable, :url => catalog_deployables_path(@catalog), :html => {:class => 'generic', :multipart => true } do |form| + - if @deployable.errors.any? + = render 'layouts/error_messages', :object => @deployable %fieldset %p - = form.label :catalog_id, t('catalog_entries.form.catalog') + = label_tag :catalog_id, t('catalog_entries.form.catalog') %span.text_instead_input= @catalog.name .clear - = form.fields_for :deployable, @catalog_entry.deployable do |deployable_fields| - %fieldset - %p - = deployable_fields.label :name, t('catalog_entries.index.name') - = deployable_fields.text_field :name, :class => 'em long' - %p - = deployable_fields.label :description, t('catalog_entries.form.description') - = deployable_fields.text_area :description, :class => 'long' - %p - = deployable_fields.label :xml, t('catalog_entries.form.choose_xml') - = deployable_fields.file_field :xml + %fieldset + %p + = form.label :name, t('catalog_entries.index.name') + = form.text_field :name, :class => 'em long' + %p + = form.label :description, t('catalog_entries.form.description') + = form.text_area :description, :class => 'long' + %p + = form.label :xml, t('catalog_entries.form.choose_xml') + = form.file_field :xml %fieldset %p = check_box_tag(:edit_xml, true, false) diff --git a/src/app/views/deployables/edit.html.haml b/src/app/views/deployables/edit.html.haml index e76b3e2..942f422 100644 --- a/src/app/views/deployables/edit.html.haml +++ b/src/app/views/deployables/edit.html.haml @@ -1,15 +1,15 @@ = render :partial => 'layouts/admin_nav' %header.admin-page-header - %h1{:class => controller.controller_name}= @catalog_entry.deployable.name + %h1{:class => controller.controller_name}= @deployable.name #obj_actions.button-container - = link_to 'New Deployable', new_catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :class => 'button primary', :id => 'new_deployable_button' + = link_to 'New Deployable', new_catalog_deployable_path(@catalog, @deployable), :class => 'button primary', :id => 'new_deployable_button' .button-group - = link_to 'Cancel Editing', catalog_deployables_path(@catalog_entry.catalog), :class => 'button pill danger', :id => 'new_deployable_button' + = link_to 'Cancel Editing', catalog_deployables_path(@catalog), :class => 'button pill danger', :id => 'new_deployable_button'
%section.admin-content-section.user %header %h2=t'catalog_entries.edit.editing_catalog_entry'
.content - = form_for @catalog_entry, :url => catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :html => { :method => :put, :class => 'generic' } do |f| + = form_for @deployable, :url => catalog_deployable_path(@catalog, @deployable), :html => { :method => :put, :class => 'generic' } do |f| = render :partial => "form", :locals => { :form => f } diff --git a/src/app/views/deployables/show.html.haml b/src/app/views/deployables/show.html.haml index 1eab46e..e09f4bf 100644 --- a/src/app/views/deployables/show.html.haml +++ b/src/app/views/deployables/show.html.haml @@ -1,12 +1,12 @@ = render :partial => 'layouts/admin_nav' %header.admin-page-header - %h1{:class => controller.controller_name}= @catalog_entry.deployable.name + %h1{:class => controller.controller_name}= @deployable.name #obj_actions.button-container .button-group - = button_to t('catalog_entries.show.delete'), catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :method => 'delete', :confirm => "#{t'catalog_entries.show.confirm_delete'}", :class => 'button danger', :id => 'delete' - = link_to t('catalog_entries.show.edit'), edit_catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :class => 'button', :id => 'edit_button' + = button_to t('catalog_entries.show.delete'), catalog_deployable_path(@catalog, @deployable), :method => 'delete', :confirm => "#{t'catalog_entries.show.confirm_delete'}", :class => 'button danger', :id => 'delete' + = link_to t('catalog_entries.show.edit'), edit_catalog_deployable_path(@catalog, @deployable), :class => 'button', :id => 'edit_button'
- = link_to t('deployments.overview.launch'), launch_new_deployments_path(:deployable_id => @catalog_entry.deployable.id, :pool_id => @catalog_entry.catalog.pool), :id => :launch_deployment + = link_to t('deployments.overview.launch'), launch_new_deployments_path(:deployable_id => @deployable.id, :pool_id => @catalog.pool), :id => :launch_deployment
%section.admin-content-section.deployable %section.image @@ -61,7 +61,7 @@ %p= t('.choose_catalog') = form_for(:catalog_entry, :url => catalog_entries_path) do |f| = f.select :catalog_id, options_for_select(@catalogs_options) - = f.hidden_field(:deployable_id, :value => @catalog_entry.deployable.id) + = f.hidden_field(:deployable_id, :value => @deployable.id) = f.submit t('catalog_entries.show.add_catalog'), :id => :add_catalog
%table @@ -70,10 +70,10 @@ %label= t('.catalog_name') %th %label= t('.environment') - - @catalog_entry.deployable.catalog_entries.each do |catalog_entry| + - @deployable.catalog_entries.each do |catalog_entry| %tr %td - = button_to t('catalog_entries.show.delete'), catalog_entry_path(@catalog_entry), :method => 'delete', :confirm => "#{t'catalog_entries.show.confirm_delete'}", :id => 'delete' + = button_to t('catalog_entries.show.delete'), catalog_entry_path(catalog_entry), :method => 'delete', :confirm => "#{t'catalog_entries.show.confirm_delete'}", :id => 'delete' = catalog_entry.catalog.name %td= catalog_entry.catalog.pool.pool_family.name
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 64512ec..e45d743 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -786,6 +786,9 @@ en: flash: error: attribute_not_exist: "Some attribute(s) is missing in XML, please check the file!" + no_catalog: "No catalogs selected" + warning: + failed: "Deployable was not created: %{message}" error: attribute_not_exists: invalid hwp_not_exists: "Hardware profile %{name} doesn't exist in DB" diff --git a/src/features/deployables.feature b/src/features/deployables.feature index d950c50..f551a14 100644 --- a/src/features/deployables.feature +++ b/src/features/deployables.feature @@ -13,27 +13,27 @@ Feature: Manage Catalog Entries Then I should see "Catalog Entries" When I follow "new_catalog_entry_button" Then I should see "Add New Catalog Entry" - When I fill in "catalog_entry[deployable_attributes][name]" with "test1" - And I fill in "catalog_entry[deployable_attributes][description]" with "description" - When I attach the file "features/upload_files/deployable.xml" to "catalog_entry[deployable_attributes][xml]" + When I fill in "deployable[name]" with "test1" + And I fill in "deployable[description]" with "description" + When I attach the file "features/upload_files/deployable.xml" to "deployable[xml]" And I press "save_button" Then I should see "Catalog entry added"
Scenario: Change the name Given there is a "default" catalog - And a catalog entry "testdepl" exists + And a catalog entry "testdepl" exists for "default" catalog When I am on the "default" catalog catalog entries page When I follow "testdepl" And I follow "edit_button" Then I should see "Editing Catalog Entry" - When I fill in "catalog_entry[deployable_attributes][name]" with "testdepl-renamed" + When I fill in "deployable[name]" with "testdepl-renamed" And I press "save_button" Then I should see "Catalog entry updated successfully!" And I should see "testdepl-renamed"
Scenario: Show catalog entry details Given there is a "default" catalog - And a catalog entry "testdepl" exists + And a catalog entry "testdepl" exists for "default" catalog And I am on the "default" catalog catalog entries page When I follow "testdepl" Then I should see "testdepl" @@ -44,7 +44,7 @@ Feature: Manage Catalog Entries
Scenario: Launch a deployment Given there is a "default" catalog - And a catalog entry "testdepl" exists + And a catalog entry "testdepl" exists for "default" catalog And I am on testdepl's catalog entry page When I follow "launch_deployment" Then I should be on the launch new deployments page @@ -57,7 +57,7 @@ Feature: Manage Catalog Entries When I check "testdepl1" catalog entry And I check "testdepl2" catalog entry And I press "delete_button" - Then there should be only 0 catalog entries + Then there should be only 0 catalog entries for "default" catalog And I should be on the "default" catalog page And I should not see "testdepl1" And I should not see "testdepl2" @@ -68,7 +68,7 @@ Feature: Manage Catalog Entries And I am on the "default" catalog page When I follow "testdepl1" And I press "delete" - Then there should be only 0 catalog entries + Then there should be only 0 catalog entries for "default" catalog And I should be on the "default" catalog page And I should not see "testdepl1"
diff --git a/src/features/step_definitions/deployable_steps.rb b/src/features/step_definitions/deployable_steps.rb index 73bf7be..62e45ee 100644 --- a/src/features/step_definitions/deployable_steps.rb +++ b/src/features/step_definitions/deployable_steps.rb @@ -1,15 +1,11 @@ -Given /^a catalog entry "([^"]*)" exists$/ do |arg1| - deployable = FactoryGirl.create :deployable, :name => arg1 - entry = FactoryGirl.create :catalog_entry, :deployable => deployable -end - When /^I check "([^"]*)" catalog entry$/ do |arg1| dep = CatalogEntry.find_by_deployable_id(Deployable.find_by_name(arg1)) - check("catalog_entry_checkbox_#{dep.id}") + check("deployable_checkbox_#{dep.id}") end
-Then /^there should be only (\d+) catalog entries$/ do |arg1| - CatalogEntry.count.should == arg1.to_i +Then /^there should be only (\d+) catalog entries for "([^"]*)" catalog$/ do |arg1, catalog_name| + catalog = Catalog.find_by_name(catalog_name) || FactoryGirl.create(:catalog, :name => catalog_name) + catalog.catalog_entries.count.should == arg1.to_i end
Given /^a catalog entry "([^"]*)" exists for "([^"]*)" catalog$/ do |arg1, catalog_name| diff --git a/src/spec/controllers/deployables_controller_spec.rb b/src/spec/controllers/deployables_controller_spec.rb index eb0a6f8..09d1917 100644 --- a/src/spec/controllers/deployables_controller_spec.rb +++ b/src/spec/controllers/deployables_controller_spec.rb @@ -39,7 +39,7 @@ describe DeployablesController do hw_profile = FactoryGirl.create(:front_hwp1) catalog = FactoryGirl.create(:catalog) mock_warden(@admin) - post(:create, :create_from_image => @image.id, :hardware_profile => hw_profile.id, :catalog_entry => {:catalog_id => catalog.id}) + post(:create, :create_from_image => @image.id, :hardware_profile => hw_profile.id, :catalog_id => catalog.id) response.should redirect_to(catalog_deployables_url(catalog.id)) end
On 12/02/2011 02:26 PM, jprovazn@redhat.com wrote:
From: Jan Provaznikjprovazn@redhat.com
This is first try to cleanup deploayble/catalog_entries rename. TODO: rename locale messages (will be probably separate patch).
src/app/controllers/catalog_entries_controller.rb | 13 +-- src/app/controllers/catalogs_controller.rb | 2 +- src/app/controllers/deployables_controller.rb | 117 ++++++++++---------- src/app/controllers/images_controller.rb | 2 +- src/app/models/catalog_entry.rb | 15 --- src/app/models/deployable.rb | 20 +++- src/app/views/catalogs/show.html.haml | 28 +++--- src/app/views/deployables/_form.html.haml | 35 +++--- src/app/views/deployables/_from_url.html.haml | 21 ++-- src/app/views/deployables/_list.html.haml | 14 +- .../views/deployables/_new_from_image.html.haml | 14 +- src/app/views/deployables/_upload.html.haml | 29 +++--- src/app/views/deployables/edit.html.haml | 8 +- src/app/views/deployables/show.html.haml | 14 +- src/config/locales/en.yml | 3 + src/features/deployables.feature | 18 ++-- src/features/step_definitions/deployable_steps.rb | 12 +-- .../controllers/deployables_controller_spec.rb | 2 +- 18 files changed, 179 insertions(+), 188 deletions(-)
diff --git a/src/app/controllers/catalog_entries_controller.rb b/src/app/controllers/catalog_entries_controller.rb index 1d454eb..8f8d9ea 100644 --- a/src/app/controllers/catalog_entries_controller.rb +++ b/src/app/controllers/catalog_entries_controller.rb @@ -24,10 +24,10 @@ class CatalogEntriesController< ApplicationController require_privilege(Privilege::MODIFY, @catalog_entry.deployable)
if @catalog_entry.save
redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :notice => t('catalog_entries.flash.notice.added')
redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry.deployable), :notice => t('catalog_entries.flash.notice.added') else flash[:warning] = t('catalog_entries.flash.warning.failed')
redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry.deployable.catalog_entries.first)
endredirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry.deployable) end
@@ -39,14 +39,7 @@ class CatalogEntriesController< ApplicationController require_privilege(Privilege::MODIFY, @catalog_entry.catalog) require_privilege(Privilege::MODIFY, @catalog_entry.deployable) @catalog_entry.destroy
- if deployable.catalog_entries.empty?
redirect_to catalog_path(catalog), :notice => t('catalog_entries.flash.notice.deleted')
- else
catalog_entry_to_nagigate = deployable.catalog_entries.first
redirect_to catalog_deployable_path(catalog_entry_to_nagigate.catalog, catalog_entry_to_nagigate), :notice => t('catalog_entries.flash.notice.deleted')
- end
redirect_to catalog_deployable_path(catalog, deployable), :notice => t('catalog_entries.flash.notice.deleted') end
end
diff --git a/src/app/controllers/catalogs_controller.rb b/src/app/controllers/catalogs_controller.rb index 6957d1c..8a3d6cd 100644 --- a/src/app/controllers/catalogs_controller.rb +++ b/src/app/controllers/catalogs_controller.rb @@ -39,7 +39,7 @@ class CatalogsController< ApplicationController
def show @catalog = Catalog.find(params[:id])
- @catalog_entries = @catalog.catalog_entries.apply_filters(:preset_filter_id => params[:catalog_entries_preset_filter], :search_filter => params[:catalog_entries_search])
- @deployables = @catalog.deployables.apply_filters(:preset_filter_id => params[:catalog_entries_preset_filter], :search_filter => params[:catalog_entries_search]) require_privilege(Privilege::VIEW, @catalog) save_breadcrumb(catalogs_path(@catalog), @catalog.name) @header = [
diff --git a/src/app/controllers/deployables_controller.rb b/src/app/controllers/deployables_controller.rb index c5e7a4e..a1d7f9b 100644 --- a/src/app/controllers/deployables_controller.rb +++ b/src/app/controllers/deployables_controller.rb @@ -23,21 +23,21 @@ class DeployablesController< ApplicationController def index clear_breadcrumbs save_breadcrumb(catalog_deployables_path(:viewstate => @viewstate ? @viewstate.id : nil))
- @deployables = Deployable.list_for_user(current_user, Privilege::VIEW)
- @catalog = Catalog.find(params[:catalog_id])
- @deployables = @catalog.deployables @catalog_entries = @deployables.collect { |d| d.catalog_entries.first } #@catalog_entries = CatalogEntry.list_for_user(current_user, Privilege::VIEW).apply_filters(:preset_filter_id => params[:catalog_entries_preset_filter], :search_filter => params[:catalog_entries_search])
@catalog = @catalog_entries.first.catalog unless @catalog_entries.empty? set_header end
def new
@catalog_entry = params[:catalog_entry].nil? ? CatalogEntry.new() : CatalogEntry.new(params[:catalog_entry])
@catalog_entry.deployable = Deployable.new unless @catalog_entry.deployable
- @deployable = Deployable.new(params[:deployable]) require_privilege(Privilege::CREATE, Deployable) if params[:create_from_image] @image = Aeolus::Image::Warehouse::Image.find(params[:create_from_image]) @hw_profiles = HardwareProfile.frontend.list_for_user(current_user, Privilege::VIEW)
@catalog_entry.deployable.name = @image.name
@deployable.name = @image.name
@selected_catalogs = params[:catalog_id].to_a load_catalogs else @catalog = Catalog.find(params[:catalog_id])
@@ -51,13 +51,14 @@ class DeployablesController< ApplicationController end
def show
- @catalog_entry = CatalogEntry.find(params[:id])
- require_privilege(Privilege::VIEW, @catalog_entry.deployable)
- save_breadcrumb(catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), @catalog_entry.deployable.name)
- @deployable = Deployable.find(params[:id])
- @catalog = Catalog.find(params[:catalog_id])
- require_privilege(Privilege::VIEW, @deployable)
- save_breadcrumb(catalog_deployable_path(@catalog, @deployable), @deployable.name) @providers = Provider.all
- @catalogs_options = Catalog.all.map {|c| [c.name, c.id] unless c == @catalog_entry.catalog}.compact
- add_permissions_inline(@catalog_entry.deployable)
- @image_details = @catalog_entry.deployable.get_image_details
- @catalogs_options = Catalog.all.map {|c| [c.name, c.id] unless c == @catalog}.compact
- add_permissions_inline(@deployable)
- @image_details = @deployable.get_image_details @image_details.each do |assembly| assembly.keys.each do |key| flash[:error] = assembly[key] if key.to_s =~ /^error\w+/
@@ -71,69 +72,70 @@ class DeployablesController< ApplicationController return end
- @catalog_entry = CatalogEntry.new(params[:catalog_entry])
- if params[:create_from_image].present?
@catalog = @catalog_entry.catalog
@catalog_entry.deployable = Deployable.new unless @catalog_entry.deployable
- else
@catalog = Catalog.find(params[:catalog_id])
@catalog_entry.catalog = @catalog
- end
- require_privilege(Privilege::MODIFY, @catalog) require_privilege(Privilege::CREATE, Deployable)
- @catalog_entry.deployable.owner = current_user
@deployable = Deployable.new(params[:deployable])
@selected_catalogs = Catalog.find(params[:catalog_id]).to_a
@deployable.owner = current_user
if params.has_key? :url xml = import_xml_from_url(params[:url]) unless xml.nil? #store xml_filename for url (i.e. url ends to: foo || foo.xml)
@catalog_entry.deployable.xml_filename = File.basename(URI.parse(params[:url]).path)
@catalog_entry.deployable.xml = xml
@deployable.xml_filename = File.basename(URI.parse(params[:url]).path)
@deployable.xml = xml end elsif params[:create_from_image].present? hw_profile = HardwareProfile.frontend.find(params[:hardware_profile]) require_privilege(Privilege::VIEW, hw_profile)
@catalog_entry.deployable.set_from_image(params[:create_from_image], hw_profile)
@deployable.set_from_image(params[:create_from_image], hw_profile) end
- if @catalog_entry.save
flash[:notice] = t "catalog_entries.flash.notice.added"
if params[:edit_xml]
redirect_to edit_catalog_deployable_path @catalog_entry.catalog.id, @catalog_entry.id, :edit_xml =>true
else
redirect_to catalog_deployables_path(@catalog)
- begin
raise t("deployables.flash.error.no_catalog") if @selected_catalogs.empty?
@deployable.transaction do
@deployable.save!
@selected_catalogs.each do |catalog|
require_privilege(Privilege::MODIFY, catalog)
CatalogEntry.create!(:catalog_id => catalog.id, :deployable_id => @deployable.id)
end
flash[:notice] = t "catalog_entries.flash.notice.added"
if params[:edit_xml]
redirect_to edit_catalog_deployable_path @selected_catalogs.first, @deployable.id, :edit_xml =>true
else
redirect_to catalog_deployables_path(@selected_catalogs.first)
end end
- else
flash[:warning]= t('catalog_entries.flash.warning.not_valid') if @catalog_entry.errors.has_key?(:xml)
- rescue => e
flash[:warning]= t('deployables.flash.warning.failed', :message => e.message)
flash[:warning]= t('catalog_entries.flash.warning.not_valid') if @deployable.errors.has_key?(:xml) if params[:create_from_image].present? load_catalogs @image = Aeolus::Image::Warehouse::Image.find(params[:create_from_image]) @hw_profiles = HardwareProfile.frontend.list_for_user(current_user, Privilege::VIEW)
@catalog_entry.deployable.name = @image.name
@deployable.name = @image.name else
@catalog = @selected_catalogs.first params.delete(:edit_xml) if params[:edit_xml]
@form_option = params[:catalog_entry].has_key?(:xml) ? 'upload' : 'from_url'
@form_option = params[:catalog_entry][:deployable].has_key?(:xml) ? 'upload' : 'from_url'
@form_option = params[:deployable].has_key?(:xml) ? 'upload' : 'from_url' end render :new end
end
def edit
- @catalog_entry = CatalogEntry.find(params[:id])
- require_privilege(Privilege::MODIFY, @catalog_entry.deployable)
- @catalog = @catalog_entry.catalog
@deployable = Deployable.find(params[:id])
require_privilege(Privilege::MODIFY, @deployable)
@catalog = Catalog.find(params[:catalog_id]) end
def update
- @catalog_entry = CatalogEntry.find(params[:id])
- require_privilege(Privilege::MODIFY, @catalog_entry.deployable)
- params[:catalog_entry][:deployable].delete(:owner_id) if params[:catalog_entry] and params[:catalog_entry][:deployable]
- @deployable = Deployable.find(params[:id])
- require_privilege(Privilege::MODIFY, @deployable)
- params[:deployable].delete(:owner_id) if params[:deployable]
- if @catalog_entry.update_attributes(params[:catalog_entry])
- if @deployable.update_attributes(params[:deployable]) flash[:notice] = t"catalog_entries.flash.notice.updated"
redirect_to catalog_deployable_path(@catalog_entry.catalog, @catalog_entry)
redirect_to catalog_deployable_path(params[:catalog_id], @deployable) else render :action => 'edit' end
@@ -141,28 +143,25 @@ class DeployablesController< ApplicationController
def multi_destroy @catalog = nil
- CatalogEntry.find(params[:catalog_entries_selected]).to_a.each do |d|
require_privilege(Privilege::MODIFY, d.catalog)
require_privilege(Privilege::MODIFY, d.deployable)
@catalog = d.catalog
# Don't do this when we're managing deployables independently
d.deployable.destroy
- Deployable.find(params[:deployables_selected]).to_a.each do |d|
# TODO: delete only in catalogs where I have permission to
#require_privilege(Privilege::MODIFY, d.catalog)
require_privilege(Privilege::MODIFY, d)
#@catalog = d.catalog d.destroy end
- redirect_to catalog_path(@catalog)
redirect_to catalog_path(params[:catalog_id]) end
def destroy
- catalog_entry = CatalogEntry.find(params[:id])
- require_privilege(Privilege::MODIFY, catalog_entry.catalog)
- require_privilege(Privilege::MODIFY, catalog_entry.deployable)
- @catalog = catalog_entry.catalog
- # Don't do this when we're managing deployables independently
- catalog_entry.deployable.destroy
- catalog_entry.destroy
deployable = Deployable.find(params[:id])
# TODO: delete only in catalogs where I have permission to
#require_privilege(Privilege::MODIFY, catalog_entry.catalog)
require_privilege(Privilege::MODIFY, deployable)
deployable.destroy
respond_to do |format|
format.html { redirect_to catalog_path(@catalog) }
endformat.html { redirect_to catalog_path(params[:catalog_id]) } end
diff --git a/src/app/controllers/images_controller.rb b/src/app/controllers/images_controller.rb index 3560640..e951059 100644 --- a/src/app/controllers/images_controller.rb +++ b/src/app/controllers/images_controller.rb @@ -172,7 +172,7 @@ class ImagesController< ApplicationController }) flash.now[:error] = t('images.flash.notice.created') if params[:make_deployable]
redirect_to new_catalog_entry_path(:create_from_image => @image.id)
redirect_to new_deployable_path(:create_from_image => @image.id) else redirect_to image_path(@image.id) end
diff --git a/src/app/models/catalog_entry.rb b/src/app/models/catalog_entry.rb index 21a8b9b..2ea3a3c 100644 --- a/src/app/models/catalog_entry.rb +++ b/src/app/models/catalog_entry.rb @@ -29,10 +29,6 @@ #
class CatalogEntry< ActiveRecord::Base
- class<< self
- include CommonFilterMethods
- end
- belongs_to :catalog belongs_to :deployable
@@ -43,15 +39,4 @@ class CatalogEntry< ActiveRecord::Base
# This probably goes away once we separate catalog entry creation from deployables accepts_nested_attributes_for :deployable
- PRESET_FILTERS_OPTIONS = []
- private
- def self.apply_search_filter(search)
- if search
where("name ILIKE :search", :search => "%#{search}%")
- else
scoped
- end
- end end
diff --git a/src/app/models/deployable.rb b/src/app/models/deployable.rb index be553e7..2a568ac 100644 --- a/src/app/models/deployable.rb +++ b/src/app/models/deployable.rb @@ -17,6 +17,11 @@ # also available at http://www.gnu.org/copyleft/gpl.html.
class Deployable< ActiveRecord::Base
class<< self
include CommonFilterMethods
end
include PermissionedObject
validates_presence_of :name
@@ -29,12 +34,14 @@ class Deployable< ActiveRecord::Base has_many :permissions, :as => :permission_object, :dependent => :destroy, :include => [:role], :order => "permissions.id ASC"
- has_many :catalog_entries
has_many :catalog_entries, :dependent => :destroy has_many :catalogs, :through => :catalog_entries
belongs_to :owner, :class_name => "User", :foreign_key => "owner_id" after_create "assign_owner_roles(owner)"
PRESET_FILTERS_OPTIONS = []
def valid_deployable_xml? deployable_xml = DeployableXML.new(xml) unless deployable_xml.validate!
@@ -135,4 +142,15 @@ class Deployable< ActiveRecord::Base #returned value [{:name => 'assembly1',{:hwp => {...}}, {:error => "msg"}, {assembly3} ..] result_array end
- private
- def self.apply_search_filter(search)
- if search
where("name ILIKE :search", :search => "%#{search}%")
- else
scoped
- end
- end
- end
diff --git a/src/app/views/catalogs/show.html.haml b/src/app/views/catalogs/show.html.haml index 1dd4259..b4433f8 100644 --- a/src/app/views/catalogs/show.html.haml +++ b/src/app/views/catalogs/show.html.haml @@ -21,33 +21,33 @@ .content - content_for :form_header do %li= restful_submit_tag t("delete"), "destroy", multi_destroy_catalog_deployables_path(@catalog), 'DELETE', :id => 'delete_button', :class => 'button danger'
%li= link_to t("catalog_entries.new_catalog_entry"), new_catalog_deployable_path(@catalog), :class => 'button', :id => 'new_catalog_entry_button'
%li= link_to t("catalog_entries.new_catalog_entry"), new_catalog_deployable_path(@catalog), :class => 'button', :id => 'new_deployablesutton'
Looks like a typo ^. The id should probably read "new_deployable_button"
- content_for :filter_controls do %li
= label_tag :catalog_entries_preset_filter, t('filter_table.viewing')
= label_tag :deployables_preset_filter, t('filter_table.viewing') = hidden_field_tag :current_path, request.fullpath
= select_tag(:catalog_entries_preset_filter, preset_filters_options_for_select(CatalogEntry::PRESET_FILTERS_OPTIONS, params[:catalog_entries_preset_filter]), :include_blank => t("catalog_entries.preset_filters.all_catalog_entries"), :disabled => true)
= restful_submit_tag t("filter_table.apply_filters"), "filter", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_catalog_entries_preset_filter'
%span.label.badge.dark= @catalog_entries.count
= select_tag(:deployables_preset_filter, preset_filters_options_for_select(Deployable::PRESET_FILTERS_OPTIONS, params[:deployables_preset_filter]), :include_blank => t("catalog_entries.preset_filters.all_catalog_entries"), :disabled => true)
= restful_submit_tag t("filter_table.apply_filters"), "filter", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_deployables_preset_filter'
%span.label.badge.dark= @deployables.count %li.table-search-filter
= text_field_tag :catalog_entries_search, params[:catalog_entries_search], :placeholder => t("filter_table.search")
= restful_submit_tag "", "search", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_catalog_entries_search'
= text_field_tag :deployables_search, params[:deployables_search], :placeholder => t("filter_table.search")
= restful_submit_tag "", "search", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_deployables_search' :javascript $(document).ready(function(){
$("#apply_catalog_entries_preset_filter").hide();
$("#catalog_entries_preset_filter").change(function() {
$("#apply_catalog_entries_preset_filter").click();
$("#apply_deployables_preset_filter").hide();
$("#deployables_preset_filter").change(function() {
$("#apply_deployables_preset_filter").click(); }); });
- = filter_table(@header, @catalog_entries) do |catalog_entry|
- = filter_table(@header, @deployables) do |deployable| %tr{:class => cycle('nostripe','stripe')} %td{:class => 'checkbox'} - selected = params[:select] == 'all'
= check_box_tag "catalog_entries_selected[]", catalog_entry.id, selected, :id => "catalog_entry_checkbox_#{catalog_entry.id}"
= check_box_tag "deployables_selected[]", deployable.id, selected, :id => "deployable_checkbox_#{deployable.id}" %td
= link_to catalog_entry.deployable.name, catalog_deployable_path(@catalog, catalog_entry)
= link_to deployable.name, catalog_deployable_path(@catalog, deployable) %td
= link_to catalog_entry.deployable.xml_filename, catalog_deployable_path(@catalog, catalog_entry, :deployable_xml => true)
= link_to deployable.xml_filename, catalog_deployable_path(@catalog, deployable, :deployable_xml => true)
diff --git a/src/app/views/deployables/_form.html.haml b/src/app/views/deployables/_form.html.haml index d638684..fa6ec32 100644 --- a/src/app/views/deployables/_form.html.haml +++ b/src/app/views/deployables/_form.html.haml @@ -1,26 +1,25 @@ -- if @catalog_entry.errors.any?
- = render 'layouts/error_messages', :object => @catalog_entry
+- if @deployable.errors.any?
- = render 'layouts/error_messages', :object => @deployable %fieldset
- if params[:edit_xml]
- = form.fields_for :deployable, @catalog_entry.deployable do |deployable_fields|
- = form_for @deployable do |form|
- if params[:edit_xml] %p
= deployable_fields.label :xml, t('.deployable_xml')
= deployable_fields.text_area :xml, :class => 'long'
- else
- %p
= form.label :catalog_id, t('catalog_entries.form.catalog')
= @catalog ? @catalog.name : @catalog_entry.catalog.name
.clear
- = form.fields_for :deployable, @catalog_entry.deployable do |deployable_fields|
= form.label :xml, t('.deployable_xml')
= form.text_area :xml, :class => 'long'
- else %p
= deployable_fields.label :name, t('catalog_entries.index.name')
= deployable_fields.text_field :name, :class => 'em long'
= label_tag :catalog_id, t('catalog_entries.form.catalog')
= @catalog.name
.clear %p
= deployable_fields.label :description, t('.description')
= deployable_fields.text_area :description, :class => 'long'
= form.label :name, t('catalog_entries.index.name')
= form.text_field :name, :class => 'em long' %p
= deployable_fields.label :xml, t('.deployable_xml')
= link_to t("catalog_entries.properties.edit_deployable_xml"), edit_catalog_deployable_path(@catalog_entry.catalog.id, @catalog_entry.id, :edit_xml=>true)
= form.label :description, t('.description')
= form.text_area :description, :class => 'long'
%p
= form.label :xml, t('.deployable_xml')
= link_to t("catalog_entries.properties.edit_deployable_xml"), edit_catalog_deployable_path(@catalog.id, @deployable.id, :edit_xml=>true)
%fieldset.options = link_to t('cancel'), catalog_path(@catalog), :class => 'button danger'
diff --git a/src/app/views/deployables/_from_url.html.haml b/src/app/views/deployables/_from_url.html.haml index 22b0099..d351ecb 100644 --- a/src/app/views/deployables/_from_url.html.haml +++ b/src/app/views/deployables/_from_url.html.haml @@ -1,19 +1,18 @@ -= form_for @catalog_entry, :url => catalog_deployables_path(@catalog), :html => {:class => 'generic', :multipart => true } do |form|
- if @catalog_entry.errors.any?
- = render 'layouts/error_messages', :object => @catalog_entry
+= form_for @deployable, :url => catalog_deployables_path(@catalog), :html => {:class => 'generic', :multipart => true } do |form|
- if @deployable.errors.any?
- = render 'layouts/error_messages', :object => @deployable %fieldset %p = form.label :catalog_id, t('catalog_entries.form.catalog') %span.text_instead_input= @catalog.name .clear
- =form.fields_for :deployable, @catalog_entry.deployable do |deployable_fields|
- %fieldset
%p
= deployable_fields.label :name, t('catalog_entries.index.name')
= deployable_fields.text_field :name, :class => 'em long'
%p
= deployable_fields.label :description, t('catalog_entries.form.description')
= deployable_fields.text_area :description, :class => 'long'
- %fieldset
- %p
= form.label :name, t('catalog_entries.index.name')
= form.text_field :name, :class => 'em long'
- %p
= form.label :description, t('catalog_entries.form.description')
%fieldset %p = label_tag :url, t('catalog_entries.form.deployable_xml_url')= form.text_area :description, :class => 'long'
diff --git a/src/app/views/deployables/_list.html.haml b/src/app/views/deployables/_list.html.haml index 117e636..55bf664 100644 --- a/src/app/views/deployables/_list.html.haml +++ b/src/app/views/deployables/_list.html.haml @@ -10,9 +10,9 @@ %li = label_tag :catalog_entries_preset_filter, t('filter_table.viewing') = hidden_field_tag :current_path, request.fullpath
= select_tag(:catalog_entries_preset_filter, preset_filters_options_for_select(CatalogEntry::PRESET_FILTERS_OPTIONS, params[:catalog_entries_preset_filter]), :include_blank => t("catalog_entries.preset_filters.all_catalog_entries"), :disabled => true)
= select_tag(:catalog_entries_preset_filter, preset_filters_options_for_select(Deployable::PRESET_FILTERS_OPTIONS, params[:catalog_entries_preset_filter]), :include_blank => t("catalog_entries.preset_filters.all_catalog_entries"), :disabled => true) = restful_submit_tag t("filter_table.apply_filters"), "filter", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_catalog_entries_preset_filter'
%span.label.badge.dark= @catalog_entries.count
%span.label.badge.dark= @deployables.count %li.table-search-filter = text_field_tag :catalog_entries_search, params[:catalog_entries_search], :placeholder => t("filter_table.search") = restful_submit_tag "", "search", filter_catalog_deployables_path(@catalog), 'POST', :class => 'button', :id => 'apply_catalog_entries_search'
@@ -25,14 +25,14 @@ }); });
- = filter_table(@header, @catalog_entries) do |catalog_entry|
- = filter_table(@header, @deployables) do |deployable| %tr{:class => cycle('nostripe','stripe')} %td{:class => 'checkbox'} - selected = params[:select] == 'all'
= check_box_tag "catalog_entries_selected[]", catalog_entry.id, selected, :id => "catalog_entry_checkbox_#{catalog_entry.id}"
= check_box_tag "deployables_selected[]", deployable.id, selected, :id => "deployable_checkbox_#{deployable.id}" %td
= link_to catalog_entry.deployable.name, catalog_deployable_path(@catalog, catalog_entry.id)
= link_to deployable.name, catalog_deployable_path(@catalog, deployable.id) %td
= link_to catalog_entry.catalog.name, catalog_entry.catalog
= link_to @catalog.name, @catalog %td
= link_to catalog_entry.deployable.xml_filename, catalog_deployable_path(@catalog, catalog_entry.id)
= link_to deployable.xml_filename, catalog_deployable_path(@catalog, deployable.id)
diff --git a/src/app/views/deployables/_new_from_image.html.haml b/src/app/views/deployables/_new_from_image.html.haml index f546698..2e1b285 100644 --- a/src/app/views/deployables/_new_from_image.html.haml +++ b/src/app/views/deployables/_new_from_image.html.haml @@ -1,12 +1,12 @@ %header.admin-page-header
- %h1.deployables= t('.catalog_entry_name', :name => @catalog_entry.deployable.name)
%h1.deployables= t('.catalog_entry_name', :name => @deployable.name)
%section.admin-content-section .content.buildpush
- = form_for @catalog_entry, :html => {:class => 'generic'} do |form|
- = form_for @deployable, :html => {:class => 'generic'} do |form| = hidden_field_tag :create_from_image, params[:create_from_image]
- if @catalog_entry.errors.any?
= render 'layouts/error_messages', :object => @catalog_entry
- if @deployable.errors.any?
= render 'layouts/error_messages', :object => @deployable .lefted.new-catalog-entry-from-image %h2= t('.title') %p= t('.description', :name => @image.name)
@@ -17,8 +17,8 @@ .clear %div = form.label :catalog_id, t('catalog_entries.form.catalog')
= form.select :catalog_id, @catalogs.collect{|c| [c.name, c.id]}
%span.text_instead_input= "Catalog1"
/= form.select :catalog_id, @catalogs.collect{|c| [c.name, c.id]}
%span.text_instead_input= @selected_catalogs.empty? ? t('deployables.form.none') : @selected_catalogs.count> 1 ? t('deployables.form.multiple') : @selected_catalogs.first.name %span.catalog_link   %div.catalog_list
@@ -26,7 +26,7 @@ - @catalogs.each do |catalog| %li.catalog .catalog_with_checkbox
= check_box_tag :catalog_ids
= check_box_tag 'catalog_id[]', catalog.id, @selected_catalogs.any?{|c| c.id == catalog.id} = catalog.name .clear .clear
diff --git a/src/app/views/deployables/_upload.html.haml b/src/app/views/deployables/_upload.html.haml index 475d492..6afaa8f 100644 --- a/src/app/views/deployables/_upload.html.haml +++ b/src/app/views/deployables/_upload.html.haml @@ -1,22 +1,21 @@ -= form_for @catalog_entry, :url => catalog_deployables_path(@catalog), :html => {:class => 'generic', :multipart => true } do |form|
- if @catalog_entry.errors.any?
- = render 'layouts/error_messages', :object => @catalog_entry
+= form_for @deployable, :url => catalog_deployables_path(@catalog), :html => {:class => 'generic', :multipart => true } do |form|
- if @deployable.errors.any?
- = render 'layouts/error_messages', :object => @deployable %fieldset %p
= form.label :catalog_id, t('catalog_entries.form.catalog')
= label_tag :catalog_id, t('catalog_entries.form.catalog') %span.text_instead_input= @catalog.name .clear
- = form.fields_for :deployable, @catalog_entry.deployable do |deployable_fields|
- %fieldset
%p
= deployable_fields.label :name, t('catalog_entries.index.name')
= deployable_fields.text_field :name, :class => 'em long'
%p
= deployable_fields.label :description, t('catalog_entries.form.description')
= deployable_fields.text_area :description, :class => 'long'
%p
= deployable_fields.label :xml, t('catalog_entries.form.choose_xml')
= deployable_fields.file_field :xml
- %fieldset
- %p
= form.label :name, t('catalog_entries.index.name')
= form.text_field :name, :class => 'em long'
- %p
= form.label :description, t('catalog_entries.form.description')
= form.text_area :description, :class => 'long'
- %p
= form.label :xml, t('catalog_entries.form.choose_xml')
%fieldset %p = check_box_tag(:edit_xml, true, false)= form.file_field :xml
diff --git a/src/app/views/deployables/edit.html.haml b/src/app/views/deployables/edit.html.haml index e76b3e2..942f422 100644 --- a/src/app/views/deployables/edit.html.haml +++ b/src/app/views/deployables/edit.html.haml @@ -1,15 +1,15 @@ = render :partial => 'layouts/admin_nav' %header.admin-page-header
- %h1{:class => controller.controller_name}= @catalog_entry.deployable.name
- %h1{:class => controller.controller_name}= @deployable.name #obj_actions.button-container
- = link_to 'New Deployable', new_catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :class => 'button primary', :id => 'new_deployable_button'
- = link_to 'New Deployable', new_catalog_deployable_path(@catalog, @deployable), :class => 'button primary', :id => 'new_deployable_button' .button-group
= link_to 'Cancel Editing', catalog_deployables_path(@catalog_entry.catalog), :class => 'button pill danger', :id => 'new_deployable_button'
= link_to 'Cancel Editing', catalog_deployables_path(@catalog), :class => 'button pill danger', :id => 'new_deployable_button'
%section.admin-content-section.user %header %h2=t'catalog_entries.edit.editing_catalog_entry'
.content
- = form_for @catalog_entry, :url => catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :html => { :method => :put, :class => 'generic' } do |f|
- = form_for @deployable, :url => catalog_deployable_path(@catalog, @deployable), :html => { :method => :put, :class => 'generic' } do |f| = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/deployables/show.html.haml b/src/app/views/deployables/show.html.haml index 1eab46e..e09f4bf 100644 --- a/src/app/views/deployables/show.html.haml +++ b/src/app/views/deployables/show.html.haml @@ -1,12 +1,12 @@ = render :partial => 'layouts/admin_nav' %header.admin-page-header
- %h1{:class => controller.controller_name}= @catalog_entry.deployable.name
- %h1{:class => controller.controller_name}= @deployable.name #obj_actions.button-container .button-group
= button_to t('catalog_entries.show.delete'), catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :method => 'delete', :confirm => "#{t'catalog_entries.show.confirm_delete'}", :class => 'button danger', :id => 'delete'
= link_to t('catalog_entries.show.edit'), edit_catalog_deployable_path(@catalog_entry.catalog, @catalog_entry), :class => 'button', :id => 'edit_button'
= button_to t('catalog_entries.show.delete'), catalog_deployable_path(@catalog, @deployable), :method => 'delete', :confirm => "#{t'catalog_entries.show.confirm_delete'}", :class => 'button danger', :id => 'delete'
= link_to t('catalog_entries.show.edit'), edit_catalog_deployable_path(@catalog, @deployable), :class => 'button', :id => 'edit_button'
- = link_to t('deployments.overview.launch'), launch_new_deployments_path(:deployable_id => @catalog_entry.deployable.id, :pool_id => @catalog_entry.catalog.pool), :id => :launch_deployment
= link_to t('deployments.overview.launch'), launch_new_deployments_path(:deployable_id => @deployable.id, :pool_id => @catalog.pool), :id => :launch_deployment
%section.admin-content-section.deployable %section.image
@@ -61,7 +61,7 @@ %p= t('.choose_catalog') = form_for(:catalog_entry, :url => catalog_entries_path) do |f| = f.select :catalog_id, options_for_select(@catalogs_options)
= f.hidden_field(:deployable_id, :value => @catalog_entry.deployable.id)
= f.hidden_field(:deployable_id, :value => @deployable.id) = f.submit t('catalog_entries.show.add_catalog'), :id => :add_catalog %table
@@ -70,10 +70,10 @@ %label= t('.catalog_name') %th %label= t('.environment')
- @catalog_entry.deployable.catalog_entries.each do |catalog_entry|
- @deployable.catalog_entries.each do |catalog_entry| %tr %td
= button_to t('catalog_entries.show.delete'), catalog_entry_path(@catalog_entry), :method => 'delete', :confirm => "#{t'catalog_entries.show.confirm_delete'}", :id => 'delete'
= button_to t('catalog_entries.show.delete'), catalog_entry_path(catalog_entry), :method => 'delete', :confirm => "#{t'catalog_entries.show.confirm_delete'}", :id => 'delete' = catalog_entry.catalog.name %td= catalog_entry.catalog.pool.pool_family.name
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 64512ec..e45d743 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -786,6 +786,9 @@ en: flash: error: attribute_not_exist: "Some attribute(s) is missing in XML, please check the file!"
no_catalog: "No catalogs selected"
warning:
failed: "Deployable was not created: %{message}" error: attribute_not_exists: invalid hwp_not_exists: "Hardware profile %{name} doesn't exist in DB"
diff --git a/src/features/deployables.feature b/src/features/deployables.feature index d950c50..f551a14 100644 --- a/src/features/deployables.feature +++ b/src/features/deployables.feature @@ -13,27 +13,27 @@ Feature: Manage Catalog Entries Then I should see "Catalog Entries" When I follow "new_catalog_entry_button" Then I should see "Add New Catalog Entry"
- When I fill in "catalog_entry[deployable_attributes][name]" with "test1"
- And I fill in "catalog_entry[deployable_attributes][description]" with "description"
- When I attach the file "features/upload_files/deployable.xml" to "catalog_entry[deployable_attributes][xml]"
When I fill in "deployable[name]" with "test1"
And I fill in "deployable[description]" with "description"
When I attach the file "features/upload_files/deployable.xml" to "deployable[xml]" And I press "save_button" Then I should see "Catalog entry added"
Scenario: Change the name Given there is a "default" catalog
- And a catalog entry "testdepl" exists
- And a catalog entry "testdepl" exists for "default" catalog When I am on the "default" catalog catalog entries page When I follow "testdepl" And I follow "edit_button" Then I should see "Editing Catalog Entry"
- When I fill in "catalog_entry[deployable_attributes][name]" with "testdepl-renamed"
When I fill in "deployable[name]" with "testdepl-renamed" And I press "save_button" Then I should see "Catalog entry updated successfully!" And I should see "testdepl-renamed"
Scenario: Show catalog entry details Given there is a "default" catalog
- And a catalog entry "testdepl" exists
- And a catalog entry "testdepl" exists for "default" catalog And I am on the "default" catalog catalog entries page When I follow "testdepl" Then I should see "testdepl"
@@ -44,7 +44,7 @@ Feature: Manage Catalog Entries
Scenario: Launch a deployment Given there is a "default" catalog
- And a catalog entry "testdepl" exists
- And a catalog entry "testdepl" exists for "default" catalog And I am on testdepl's catalog entry page When I follow "launch_deployment" Then I should be on the launch new deployments page
@@ -57,7 +57,7 @@ Feature: Manage Catalog Entries When I check "testdepl1" catalog entry And I check "testdepl2" catalog entry And I press "delete_button"
- Then there should be only 0 catalog entries
- Then there should be only 0 catalog entries for "default" catalog And I should be on the "default" catalog page And I should not see "testdepl1" And I should not see "testdepl2"
@@ -68,7 +68,7 @@ Feature: Manage Catalog Entries And I am on the "default" catalog page When I follow "testdepl1" And I press "delete"
- Then there should be only 0 catalog entries
- Then there should be only 0 catalog entries for "default" catalog And I should be on the "default" catalog page And I should not see "testdepl1"
diff --git a/src/features/step_definitions/deployable_steps.rb b/src/features/step_definitions/deployable_steps.rb index 73bf7be..62e45ee 100644 --- a/src/features/step_definitions/deployable_steps.rb +++ b/src/features/step_definitions/deployable_steps.rb @@ -1,15 +1,11 @@ -Given /^a catalog entry "([^"]*)" exists$/ do |arg1|
- deployable = FactoryGirl.create :deployable, :name => arg1
- entry = FactoryGirl.create :catalog_entry, :deployable => deployable
-end
- When /^I check "([^"]*)" catalog entry$/ do |arg1| dep = CatalogEntry.find_by_deployable_id(Deployable.find_by_name(arg1))
- check("catalog_entry_checkbox_#{dep.id}")
- check("deployable_checkbox_#{dep.id}") end
-Then /^there should be only (\d+) catalog entries$/ do |arg1|
- CatalogEntry.count.should == arg1.to_i
+Then /^there should be only (\d+) catalog entries for "([^"]*)" catalog$/ do |arg1, catalog_name|
catalog = Catalog.find_by_name(catalog_name) || FactoryGirl.create(:catalog, :name => catalog_name)
catalog.catalog_entries.count.should == arg1.to_i end
Given /^a catalog entry "([^"]*)" exists for "([^"]*)" catalog$/ do |arg1, catalog_name|
diff --git a/src/spec/controllers/deployables_controller_spec.rb b/src/spec/controllers/deployables_controller_spec.rb index eb0a6f8..09d1917 100644 --- a/src/spec/controllers/deployables_controller_spec.rb +++ b/src/spec/controllers/deployables_controller_spec.rb @@ -39,7 +39,7 @@ describe DeployablesController do hw_profile = FactoryGirl.create(:front_hwp1) catalog = FactoryGirl.create(:catalog) mock_warden(@admin)
- post(:create, :create_from_image => @image.id, :hardware_profile => hw_profile.id, :catalog_entry => {:catalog_id => catalog.id})
- post(:create, :create_from_image => @image.id, :hardware_profile => hw_profile.id, :catalog_id => catalog.id) response.should redirect_to(catalog_deployables_url(catalog.id)) end
ACK. There is a small typo (inline).
aeolus-devel@lists.fedorahosted.org