This patch fixes BZ723306. It implements multi_destroy feature for deployments and deployments/_list.haml is used for displaying deployments table thoughout the application (filter views)
From: Jiri Tomasek jtomasek@redhat.com
--- src/app/controllers/deployments_controller.rb | 51 +++++++++++++---- src/app/controllers/pools_controller.rb | 7 ++- src/app/views/deployments/_filter_view.haml | 19 ------ src/app/views/deployments/_list.haml | 75 ++++++++++--------------- src/config/locales/en.yml | 1 + src/config/routes.rb | 2 +- src/features/deployment.feature | 11 ++++ 7 files changed, 87 insertions(+), 79 deletions(-) delete mode 100644 src/app/views/deployments/_filter_view.haml
diff --git a/src/app/controllers/deployments_controller.rb b/src/app/controllers/deployments_controller.rb index ee3039e..bba91c5 100644 --- a/src/app/controllers/deployments_controller.rb +++ b/src/app/controllers/deployments_controller.rb @@ -163,9 +163,31 @@ class DeploymentsController < ApplicationController end
def destroy + deployment = Deployment.find(params[:id]) + if check_privilege(Privilege::MODIFY, deployment) + begin + deployment.stop_instances_and_destroy! + flash[:success] = t('deployments.deleted', :list => deployment.name, :count => 1) + rescue + flash[:error] = t('deployments.not_deleted', :list => deployment.name, :count => 1) + end + else + flash[:error] = t('deployments.not_deleted', :list => deployment.name, :count => 1) + end + respond_to do |format| + format.js do + load_deployments + render :partial => 'list' + end + format.html { redirect_to pools_url(:view => 'filter', :details_tab => 'deployments') } + format.json { render :json => {:success => destroyed, :errors => failed} } + end + end + + def multi_destroy destroyed = [] failed = [] - Deployment.find(ids_list).each do |deployment| + Deployment.find(params[:deployments_selected] || []).each do |deployment| if check_privilege(Privilege::MODIFY, deployment) begin deployment.stop_instances_and_destroy! @@ -177,6 +199,8 @@ class DeploymentsController < ApplicationController failed << deployment.name end end + # If nothing is selected, display an error message: + flash[:error] = t('deployments.none_selected') if failed.blank? && destroyed.blank? flash[:success] = t('deployments.deleted', :list => destroyed, :count => destroyed.size) if destroyed.present? flash[:error] = t('deployments.not_deleted', :list => failed, :count => failed.size) if failed.present? respond_to do |format| @@ -184,7 +208,7 @@ class DeploymentsController < ApplicationController load_deployments render :partial => 'list' end - format.html { redirect_to pools_url } + format.html { redirect_to params[:backlink] || pools_url(:view => 'filter', :details_tab => 'deployments') } format.json { render :json => {:success => destroyed, :errors => failed} } end end @@ -192,7 +216,7 @@ class DeploymentsController < ApplicationController def multi_stop notices = "" errors = "" - Deployment.find(params[:deployments_selected]).each do |deployment| + Deployment.find(params[:deployments_selected] || []).each do |deployment| deployment.instances.each do |instance| begin require_privilege(Privilege::USE,instance) @@ -213,6 +237,8 @@ class DeploymentsController < ApplicationController end end end + # If nothing is selected, display an error message: + errors = t('deployments.none_selected') if errors.blank? && notices.blank? flash[:notice] = notices unless notices.blank? flash[:error] = errors unless errors.blank? respond_to do |format| @@ -220,7 +246,7 @@ class DeploymentsController < ApplicationController load_deployments render :partial => 'list' end - format.html { redirect_to pools_path(:details_tab => 'deployments', :filter_view => filter_view?) } + format.html { redirect_to params[:backlink] || pools_path(:view => 'filter', :details_tab => 'deployments') } format.json { render :json => {:success => notices, :errors => errors} } end end @@ -239,13 +265,16 @@ class DeploymentsController < ApplicationController :page => params[:page] || 1, :order => (params[:order_field] || 'name') +' '+ (params[:order_dir] || 'asc') ) - @header = [ - { :name => "", :sort_attr => :name }, - { :name => "Deployment name", :sort_attr => :name }, - { :name => "Deployable", :sortable => false }, - { :name => "Owner", :sort_attr => "owner.login"}, - { :name => "Running Since", :sort_attr => :running_since }, - { :name => "Pool", :sort_attr => "pool.name" } + @deployments_header = [ + { :name => '', :sortable => false }, + { :name => '', :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"), :sortable => false }, + { :name => t("pools.index.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, diff --git a/src/app/controllers/pools_controller.rb b/src/app/controllers/pools_controller.rb index 745eb5b..cead1f9 100644 --- a/src/app/controllers/pools_controller.rb +++ b/src/app/controllers/pools_controller.rb @@ -62,9 +62,9 @@ class PoolsController < ApplicationController save_breadcrumb(pool_path(@pool, :viewstate => viewstate_id), @pool.name) require_privilege(Privilege::VIEW, @pool) @statistics = @pool.statistics - @view = filter_view? ? 'deployments/filter_view' : 'deployments/pretty_view' unless params[:details_tab] + @view = filter_view? ? 'deployments/list' : 'deployments/pretty_view' unless params[:details_tab] if params[:details_tab] == 'deployments' - @view = filter_view? ? 'deployments/filter_view' : 'deployments/pretty_view' + @view = filter_view? ? 'deployments/list' : 'deployments/pretty_view' elsif params[:details_tab] == 'history' @view = filter_view? ? 'history_filter' : 'history_pretty' end @@ -234,8 +234,11 @@ class PoolsController < ApplicationController { :name => '', :sortable => false }, { :name => '', :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"), :sortable => false }, + { :name => t("pools.index.pool"), :sortable => false }, + { :name => t("pools.index.owner"), :sortable => false }, { :name => t("providers.provider"), :sortable => false } ] end diff --git a/src/app/views/deployments/_filter_view.haml b/src/app/views/deployments/_filter_view.haml deleted file mode 100644 index fc231c9..0000000 --- a/src/app/views/deployments/_filter_view.haml +++ /dev/null @@ -1,19 +0,0 @@ -= filter_table(@deployments_header, @deployments) do |deployment| - %tr - %td - %input{:name => "deployment_selected[]", :type => "checkbox", :value => deployment.id, :id => "deployment_checkbox_#{deployment.id}" } - %td - -#there will be icons (belongs to mockups) - %td - = link_to(deployment.name, deployment) - %td - = deployment.deployable_xml.name - %td - = deployment.instances.count - %td - = link_to(deployment.provider.provider_type.name, deployment.provider) if deployment.provider - -:javascript - Conductor.setupPrettyFilterURL( - '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'filter' )}', - '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'pretty' )}'); \ No newline at end of file diff --git a/src/app/views/deployments/_list.haml b/src/app/views/deployments/_list.haml index d8a049e..093c15e 100644 --- a/src/app/views/deployments/_list.haml +++ b/src/app/views/deployments/_list.haml @@ -1,51 +1,34 @@ - if request.xhr? = render :partial => '/layouts/notification'
-- form_tag({}, :class => 'filterable-data') do - %ul.obj_actions - %li= restful_submit_tag "Stop Selected Deployments", "multi_stop", multi_stop_deployments_path, 'POST', :id => 'stop_button', :class => 'button' +- form_header = capture_haml do + = restful_submit_tag 'Stop Selected', 'stop', multi_stop_deployments_path, 'POST', :class => 'button', :id => "stop_button" + = restful_submit_tag 'Delete Selected', 'destroy', multi_destroy_deployments_path, 'DELETE', :class => 'button danger', :id => "delete_button" + = hidden_field_tag 'backlink', request.url
- %div.controls - %ul.filter-controls - %li= render :partial => 'layouts/select_all_none' += filter_table(@deployments_header, @deployments, :form_header => form_header) do |deployment| + %tr{ :class => cycle('nostripe', 'stripe') } + %td + - selected = params[:select] == 'all' + = check_box_tag "deployments_selected[]", deployment.id, selected, :id => "deployment_checkbox_#{deployment.id}" + %td + -#there will be icons (belongs to mockups) + %td + = link_to(deployment.name, deployment) + %td + = deployment.created_at + %td + = deployment.deployable_xml.name + %td + = deployment.instances.count + %td + = link_to deployment.pool.name, pool_path(deployment.pool) + %td + = owner_name(deployment) + %td + = link_to(deployment.provider.provider_type.name, deployment.provider) if deployment.provider
- %li - %label{:for => "deployments_running"} Viewing - = select_tag("deployments_running", "<option>Deployments running</option>",:disabled => true) - %li.object-count - %strong= @deployments.count.to_s - results - - %table#deployments_table.checkbox_table - %thead - %tr - %th.ignore - %th - = t("pools.index.deployment_name") - %th - = t("pools.index.deployed_on") - %th - = t("instances.instances") - %th - = t("pools.index.pool") - %th - = t("pools.index.pool_family") - %th - = t("pools.index.owner") - - @deployments.each do |deployment| - %tr - %td - - selected = params[:select] == 'all' - = check_box_tag "deployments_selected[]", deployment.id, selected, :id => "deployment_checkbox_#{deployment.id}" - %td - = link_to deployment.name, deployment_path(deployment) - %td - = deployment.created_at - %td - = deployment.instances.count - %td - = link_to deployment.pool.name, pool_path(deployment.pool) - %td - = deployment.pool.pool_family.name - %td - = owner_name(deployment) +:javascript + Conductor.setupPrettyFilterURL( + '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'filter' )}', + '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'pretty' )}'); diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 8e9b61e..26e6887 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -95,6 +95,7 @@ en: not_deleted: one: "The deployment %{list} could not be deleted." other: "The deployments %{list} could not be deleted." + none_selected: "You must select one or more deployments." instances: instances: Instances updated: diff --git a/src/config/routes.rb b/src/config/routes.rb index 7f83338..8970949 100644 --- a/src/config/routes.rb +++ b/src/config/routes.rb @@ -33,7 +33,7 @@ ActionController::Routing::Routes.draw do |map| # -- just remember to delete public/index.html.
map.resources :pools, :collection => { :multi_destroy => :delete } - map.resources :deployments, :collection => { :multi_stop => :get, :launch_new => :get, :check_name => :get } + map.resources :deployments, :collection => { :multi_stop => :get, :multi_destroy => :delete, :launch_new => :get, :check_name => :get } map.resources :instances, :collection => {:start => :get, :multi_stop => :get, :remove_failed => :get, :can_start => :get, :can_create => :get }, :member => {:key => :get}
map.can_start_instance '/instances/:instance_id/can_start/:provider_account_id', :controller => 'instances', :action => 'can_start', :conditions => { :method => :get } diff --git a/src/features/deployment.feature b/src/features/deployment.feature index 8840126..8bcc923 100644 --- a/src/features/deployment.feature +++ b/src/features/deployment.feature @@ -183,6 +183,17 @@ Feature: Manage Deployments And I press "delete_button" Then I should see "The deployment testdeployment was scheduled for deletion"
+ Scenario: Delete multiple deployments + Given a deployment "mydeployment1" exists + And a deployment "mydeployment2" exists + And I am on the pools page + When I follow link with ID "filter_view" + And I follow "Deployments" + And I check "mydeployment1" deployment + And I check "mydeployment2" deployment + And I press "delete_button" + Then I should see "The deployments mydeployment1mydeployment2 were scheduled for deletion" + Scenario: Delete a deployment with running instances Given a deployment "mockdeployment" exists And the deployment "mockdeployment" has an instance named "myinstance"
Fixed, updated test
This patch fixes BZ723306. It implements multi_destroy feature for deployments and deployments/_list.haml is used for displaying deployments table thoughout the application (filter views)
From: Jiri Tomasek jtomasek@redhat.com
--- src/app/controllers/deployments_controller.rb | 53 +++++++++++++---- src/app/controllers/pools_controller.rb | 7 ++- src/app/views/deployments/_filter_view.haml | 19 ------ src/app/views/deployments/_list.haml | 75 ++++++++++--------------- src/config/locales/en.yml | 1 + src/config/routes.rb | 2 +- src/features/deployment.feature | 11 ++++ 7 files changed, 88 insertions(+), 80 deletions(-) delete mode 100644 src/app/views/deployments/_filter_view.haml
diff --git a/src/app/controllers/deployments_controller.rb b/src/app/controllers/deployments_controller.rb index ee3039e..16c9c32 100644 --- a/src/app/controllers/deployments_controller.rb +++ b/src/app/controllers/deployments_controller.rb @@ -163,9 +163,31 @@ class DeploymentsController < ApplicationController end
def destroy + deployment = Deployment.find(params[:id]) + if check_privilege(Privilege::MODIFY, deployment) + begin + deployment.stop_instances_and_destroy! + flash[:success] = t('deployments.deleted', :list => deployment.name, :count => 1) + rescue + flash[:error] = t('deployments.not_deleted', :list => deployment.name, :count => 1) + end + else + flash[:error] = t('deployments.not_deleted', :list => deployment.name, :count => 1) + end + respond_to do |format| + format.js do + load_deployments + render :partial => 'list' + end + format.html { redirect_to pools_url(:view => 'filter', :details_tab => 'deployments') } + format.json { render :json => {:success => destroyed, :errors => failed} } + end + end + + def multi_destroy destroyed = [] failed = [] - Deployment.find(ids_list).each do |deployment| + Deployment.find(params[:deployments_selected] || []).each do |deployment| if check_privilege(Privilege::MODIFY, deployment) begin deployment.stop_instances_and_destroy! @@ -177,14 +199,16 @@ class DeploymentsController < ApplicationController failed << deployment.name end end - flash[:success] = t('deployments.deleted', :list => destroyed, :count => destroyed.size) if destroyed.present? + # If nothing is selected, display an error message: + flash[:error] = t('deployments.none_selected') if failed.blank? && destroyed.blank? + flash[:success] = t('deployments.deleted', :list => destroyed.join(', '), :count => destroyed.size) if destroyed.present? flash[:error] = t('deployments.not_deleted', :list => failed, :count => failed.size) if failed.present? respond_to do |format| format.js do load_deployments render :partial => 'list' end - format.html { redirect_to pools_url } + format.html { redirect_to params[:backlink] || pools_url(:view => 'filter', :details_tab => 'deployments') } format.json { render :json => {:success => destroyed, :errors => failed} } end end @@ -192,7 +216,7 @@ class DeploymentsController < ApplicationController def multi_stop notices = "" errors = "" - Deployment.find(params[:deployments_selected]).each do |deployment| + Deployment.find(params[:deployments_selected] || []).each do |deployment| deployment.instances.each do |instance| begin require_privilege(Privilege::USE,instance) @@ -213,6 +237,8 @@ class DeploymentsController < ApplicationController end end end + # If nothing is selected, display an error message: + errors = t('deployments.none_selected') if errors.blank? && notices.blank? flash[:notice] = notices unless notices.blank? flash[:error] = errors unless errors.blank? respond_to do |format| @@ -220,7 +246,7 @@ class DeploymentsController < ApplicationController load_deployments render :partial => 'list' end - format.html { redirect_to pools_path(:details_tab => 'deployments', :filter_view => filter_view?) } + format.html { redirect_to params[:backlink] || pools_path(:view => 'filter', :details_tab => 'deployments') } format.json { render :json => {:success => notices, :errors => errors} } end end @@ -239,13 +265,16 @@ class DeploymentsController < ApplicationController :page => params[:page] || 1, :order => (params[:order_field] || 'name') +' '+ (params[:order_dir] || 'asc') ) - @header = [ - { :name => "", :sort_attr => :name }, - { :name => "Deployment name", :sort_attr => :name }, - { :name => "Deployable", :sortable => false }, - { :name => "Owner", :sort_attr => "owner.login"}, - { :name => "Running Since", :sort_attr => :running_since }, - { :name => "Pool", :sort_attr => "pool.name" } + @deployments_header = [ + { :name => '', :sortable => false }, + { :name => '', :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"), :sortable => false }, + { :name => t("pools.index.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, diff --git a/src/app/controllers/pools_controller.rb b/src/app/controllers/pools_controller.rb index 745eb5b..cead1f9 100644 --- a/src/app/controllers/pools_controller.rb +++ b/src/app/controllers/pools_controller.rb @@ -62,9 +62,9 @@ class PoolsController < ApplicationController save_breadcrumb(pool_path(@pool, :viewstate => viewstate_id), @pool.name) require_privilege(Privilege::VIEW, @pool) @statistics = @pool.statistics - @view = filter_view? ? 'deployments/filter_view' : 'deployments/pretty_view' unless params[:details_tab] + @view = filter_view? ? 'deployments/list' : 'deployments/pretty_view' unless params[:details_tab] if params[:details_tab] == 'deployments' - @view = filter_view? ? 'deployments/filter_view' : 'deployments/pretty_view' + @view = filter_view? ? 'deployments/list' : 'deployments/pretty_view' elsif params[:details_tab] == 'history' @view = filter_view? ? 'history_filter' : 'history_pretty' end @@ -234,8 +234,11 @@ class PoolsController < ApplicationController { :name => '', :sortable => false }, { :name => '', :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"), :sortable => false }, + { :name => t("pools.index.pool"), :sortable => false }, + { :name => t("pools.index.owner"), :sortable => false }, { :name => t("providers.provider"), :sortable => false } ] end diff --git a/src/app/views/deployments/_filter_view.haml b/src/app/views/deployments/_filter_view.haml deleted file mode 100644 index fc231c9..0000000 --- a/src/app/views/deployments/_filter_view.haml +++ /dev/null @@ -1,19 +0,0 @@ -= filter_table(@deployments_header, @deployments) do |deployment| - %tr - %td - %input{:name => "deployment_selected[]", :type => "checkbox", :value => deployment.id, :id => "deployment_checkbox_#{deployment.id}" } - %td - -#there will be icons (belongs to mockups) - %td - = link_to(deployment.name, deployment) - %td - = deployment.deployable_xml.name - %td - = deployment.instances.count - %td - = link_to(deployment.provider.provider_type.name, deployment.provider) if deployment.provider - -:javascript - Conductor.setupPrettyFilterURL( - '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'filter' )}', - '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'pretty' )}'); \ No newline at end of file diff --git a/src/app/views/deployments/_list.haml b/src/app/views/deployments/_list.haml index d8a049e..093c15e 100644 --- a/src/app/views/deployments/_list.haml +++ b/src/app/views/deployments/_list.haml @@ -1,51 +1,34 @@ - if request.xhr? = render :partial => '/layouts/notification'
-- form_tag({}, :class => 'filterable-data') do - %ul.obj_actions - %li= restful_submit_tag "Stop Selected Deployments", "multi_stop", multi_stop_deployments_path, 'POST', :id => 'stop_button', :class => 'button' +- form_header = capture_haml do + = restful_submit_tag 'Stop Selected', 'stop', multi_stop_deployments_path, 'POST', :class => 'button', :id => "stop_button" + = restful_submit_tag 'Delete Selected', 'destroy', multi_destroy_deployments_path, 'DELETE', :class => 'button danger', :id => "delete_button" + = hidden_field_tag 'backlink', request.url
- %div.controls - %ul.filter-controls - %li= render :partial => 'layouts/select_all_none' += filter_table(@deployments_header, @deployments, :form_header => form_header) do |deployment| + %tr{ :class => cycle('nostripe', 'stripe') } + %td + - selected = params[:select] == 'all' + = check_box_tag "deployments_selected[]", deployment.id, selected, :id => "deployment_checkbox_#{deployment.id}" + %td + -#there will be icons (belongs to mockups) + %td + = link_to(deployment.name, deployment) + %td + = deployment.created_at + %td + = deployment.deployable_xml.name + %td + = deployment.instances.count + %td + = link_to deployment.pool.name, pool_path(deployment.pool) + %td + = owner_name(deployment) + %td + = link_to(deployment.provider.provider_type.name, deployment.provider) if deployment.provider
- %li - %label{:for => "deployments_running"} Viewing - = select_tag("deployments_running", "<option>Deployments running</option>",:disabled => true) - %li.object-count - %strong= @deployments.count.to_s - results - - %table#deployments_table.checkbox_table - %thead - %tr - %th.ignore - %th - = t("pools.index.deployment_name") - %th - = t("pools.index.deployed_on") - %th - = t("instances.instances") - %th - = t("pools.index.pool") - %th - = t("pools.index.pool_family") - %th - = t("pools.index.owner") - - @deployments.each do |deployment| - %tr - %td - - selected = params[:select] == 'all' - = check_box_tag "deployments_selected[]", deployment.id, selected, :id => "deployment_checkbox_#{deployment.id}" - %td - = link_to deployment.name, deployment_path(deployment) - %td - = deployment.created_at - %td - = deployment.instances.count - %td - = link_to deployment.pool.name, pool_path(deployment.pool) - %td - = deployment.pool.pool_family.name - %td - = owner_name(deployment) +:javascript + Conductor.setupPrettyFilterURL( + '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'filter' )}', + '#{url_for(:action => :show, :details_tab => 'deployments', :view => 'pretty' )}'); diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml index 8e9b61e..26e6887 100644 --- a/src/config/locales/en.yml +++ b/src/config/locales/en.yml @@ -95,6 +95,7 @@ en: not_deleted: one: "The deployment %{list} could not be deleted." other: "The deployments %{list} could not be deleted." + none_selected: "You must select one or more deployments." instances: instances: Instances updated: diff --git a/src/config/routes.rb b/src/config/routes.rb index 7f83338..8970949 100644 --- a/src/config/routes.rb +++ b/src/config/routes.rb @@ -33,7 +33,7 @@ ActionController::Routing::Routes.draw do |map| # -- just remember to delete public/index.html.
map.resources :pools, :collection => { :multi_destroy => :delete } - map.resources :deployments, :collection => { :multi_stop => :get, :launch_new => :get, :check_name => :get } + map.resources :deployments, :collection => { :multi_stop => :get, :multi_destroy => :delete, :launch_new => :get, :check_name => :get } map.resources :instances, :collection => {:start => :get, :multi_stop => :get, :remove_failed => :get, :can_start => :get, :can_create => :get }, :member => {:key => :get}
map.can_start_instance '/instances/:instance_id/can_start/:provider_account_id', :controller => 'instances', :action => 'can_start', :conditions => { :method => :get } diff --git a/src/features/deployment.feature b/src/features/deployment.feature index 8840126..086b42c 100644 --- a/src/features/deployment.feature +++ b/src/features/deployment.feature @@ -183,6 +183,17 @@ Feature: Manage Deployments And I press "delete_button" Then I should see "The deployment testdeployment was scheduled for deletion"
+ Scenario: Delete multiple deployments + Given a deployment "mydeployment1" exists + And a deployment "mydeployment2" exists + And I am on the pools page + When I follow link with ID "filter_view" + And I follow "Deployments" + And I check "mydeployment1" deployment + And I check "mydeployment2" deployment + And I press "delete_button" + Then I should see "The deployments mydeployment1, mydeployment2 were scheduled for deletion" + Scenario: Delete a deployment with running instances Given a deployment "mockdeployment" exists And the deployment "mockdeployment" has an instance named "myinstance"
aeolus-devel@lists.fedorahosted.org