[PATCH conductor] BZ 788558 - instance termination for single instance
Tomáš Hrčka
thrcka at redhat.com
Fri Mar 2 10:21:16 UTC 2012
On 02/28/2012 11:20 AM, jprovazn at redhat.com wrote:
> From: Jan Provaznik<jprovazn at redhat.com>
>
> This patch extends previous patch for 788558 to cover also single
> instance stop which is available on deployments show pretty view.
> ---
> src/app/controllers/deployments_controller.rb | 2 +-
> src/app/controllers/instances_controller.rb | 13 +++++++++----
> src/app/models/instance.rb | 4 ++--
> .../views/instances/confirm_terminate.html.haml | 8 ++++++--
> 4 files changed, 18 insertions(+), 9 deletions(-)
>
> diff --git a/src/app/controllers/deployments_controller.rb b/src/app/controllers/deployments_controller.rb
> index 7b5e4c0..d65dea3 100644
> --- a/src/app/controllers/deployments_controller.rb
> +++ b/src/app/controllers/deployments_controller.rb
> @@ -305,7 +305,7 @@ class DeploymentsController< ApplicationController
> begin
> require_privilege(Privilege::USE, instance)
> if @inaccessible_instances.include?(instance)
> - instance.force_stop(current_user)
> + instance.forced_stop(current_user)
> notices<< "#{log_prefix}: #{t('instances.flash.notice.forced_stop')}"
> else
> instance.stop(current_user)
> diff --git a/src/app/controllers/instances_controller.rb b/src/app/controllers/instances_controller.rb
> index ef04cd7..eb696e2 100644
> --- a/src/app/controllers/instances_controller.rb
> +++ b/src/app/controllers/instances_controller.rb
> @@ -18,7 +18,7 @@ class InstancesController< ApplicationController
> before_filter :require_user
> before_filter :load_instance, :only => [:show, :key, :edit, :update, :stop, :reboot]
> before_filter :set_view_vars, :only => [:show, :index, :export_events]
> - before_filter :check_inaccessible_instances, :only => :multi_stop
> + before_filter :check_inaccessible_instances, :only => [:stop, :multi_stop]
>
> def index
> @params = params
> @@ -148,7 +148,7 @@ class InstancesController< ApplicationController
> require_privilege(Privilege::USE,instance)
>
> if @inaccessible_instances.include?(instance)
> - instance.force_stop(current_user)
> + instance.forced_stop(current_user)
> notices<< "#{instance.name}: #{t('instances.flash.notice.forced_stop')}"
> else
> instance.stop(current_user)
> @@ -176,7 +176,11 @@ class InstancesController< ApplicationController
> end
>
> def stop
> - do_operation(:stop)
> + if @inaccessible_instances.include?(@instance)
> + do_operation(:forced_stop)
> + else
> + do_operation(:stop)
> + end
> end
>
> def reboot
> @@ -251,7 +255,8 @@ class InstancesController< ApplicationController
> end
>
> def check_inaccessible_instances
> - @instances_to_stop = Instance.find(params[:instance_selected] || [])
> + # @instance is set only on stop action
> + @instances_to_stop = @instance ? @instance.to_a : Instance.find(params[:instance_selected].to_a)
> @inaccessible_instances = Instance.stoppable_inaccessible_instances(@instances_to_stop)
> if params[:terminate].blank? and @inaccessible_instances.any?
> respond_to do |format|
> diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb
> index 9027e24..21739f9 100644
> --- a/src/app/models/instance.rb
> +++ b/src/app/models/instance.rb
> @@ -447,12 +447,12 @@ class Instance< ActiveRecord::Base
> do_operation(user, 'reboot')
> end
>
> - def force_stop(user)
> + def forced_stop(user)
> self.state = STATE_STOPPED
> save!
> event = Event.create!(:source => self, :event_time => Time.now,
> :summary => "Instance is not accessible, state changed to stopped",
> - :status_code => "force_stop")
> + :status_code => "forced_stop")
> end
>
> def deployed?
> diff --git a/src/app/views/instances/confirm_terminate.html.haml b/src/app/views/instances/confirm_terminate.html.haml
> index ea680f2..64709eb 100644
> --- a/src/app/views/instances/confirm_terminate.html.haml
> +++ b/src/app/views/instances/confirm_terminate.html.haml
> @@ -6,11 +6,15 @@
> .content.confirm_instances_termination
> .align-center
> %strong= t('.terminate_instances_description')
> - = form_tag multi_stop_instances_path, :method => :post do
> + - url = @instance ? stop_instance_path(@instance) : multi_stop_instances_path
> + = form_tag url, :method => :post do
> - @instances_to_stop.each do |i|
> = hidden_field_tag 'instance_selected[]', i.id
> %ul
> - @inaccessible_instances.each do |i|
> %li= i.name
> - = link_to t('cancel'), pools_path(:view => 'filter', :details_tab => 'instances'), :class => 'button'
> + - if @instance
> + = link_to t('cancel'), deployment_path(@instance.deployment, :details_tab => 'instances'), :class => 'button'
> + - else
> + = link_to t('cancel'), pools_path(:view => 'filter', :details_tab => 'instances'), :class => 'button'
> = submit_tag t('.terminate'), :name => 'terminate', :class => 'button', :id => 'terminate_button'
ACK.
More information about the aeolus-devel
mailing list