Skip to content

Commit

Permalink
Refactor resource_pool controller, make Edit VM thru Resource Pool work
Browse files Browse the repository at this point in the history
  • Loading branch information
Hilda Stastna committed Jan 17, 2020
1 parent 4ca7d4a commit c7630c4
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 46 deletions.
7 changes: 4 additions & 3 deletions app/controllers/mixins/generic_button_mixin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def handle_vm_buttons(pressed)
return [:finished, pfx] if vm_button_redirected?(pfx, pressed)

unless ["#{pfx}_edit", "#{pfx}_miq_request_new", "#{pfx}_clone",
"#{pfx}_migrate", "#{pfx}_publish"].include?(pressed)
"#{pfx}_migrate", "#{pfx}_publish", 'vm_rename'].include?(pressed)
@refresh_div = "main_div"
@refresh_partial = "layouts/gtl"
show # Handle VMs buttons
Expand Down Expand Up @@ -79,8 +79,9 @@ def button
return
end

if params[:pressed].ends_with?("_edit") || ["#{pfx}_miq_request_new", "#{pfx}_clone",
"#{pfx}_migrate", "#{pfx}_publish"].include?(params[:pressed])
if params[:pressed].ends_with?("_edit") ||
["#{pfx}_miq_request_new", "#{pfx}_clone", "#{pfx}_migrate", "#{pfx}_publish"].include?(params[:pressed]) ||
params[:pressed] == 'vm_rename' && @flash_array.nil?
render_or_redirect_partial(pfx)
elsif @refresh_div == "main_div" && @lastaction == "show_list"
replace_gtl_main_div
Expand Down
51 changes: 12 additions & 39 deletions app/controllers/resource_pool_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ class ResourcePoolController < ApplicationController
after_action :cleanup_action
after_action :set_session_data

include Mixins::GenericButtonMixin
include Mixins::GenericListMixin
include Mixins::GenericSessionMixin
include Mixins::GenericShowMixin
Expand All @@ -17,48 +18,20 @@ def self.display_methods
def button
@edit = session[:edit] # Restore @edit for adv search box
params[:display] = @display if %w[all_vms vms resource_pools].include?(@display) # Were we displaying sub-items
if %w[all_vms vms resource_pools].include?(@display) # Need to check, since RPs contain RPs

if params[:pressed].starts_with?("vm_", # Handle buttons from sub-items screen
"miq_template_",
"guest_")

pfx = pfx_for_vm_button_pressed(params[:pressed])
process_vm_buttons(pfx)

return if ["#{pfx}_policy_sim", "#{pfx}_compare", "#{pfx}_tag", "#{pfx}_protect",
"#{pfx}_retire", "#{pfx}_right_size", "#{pfx}_ownership",
"#{pfx}_reconfigure"].include?(params[:pressed]) &&
@flash_array.nil? # Some other screen is showing, so return

unless ["#{pfx}_edit", "#{pfx}_miq_request_new", "#{pfx}_clone",
"#{pfx}_migrate", "#{pfx}_publish", 'vm_rename'].include?(params[:pressed])
@refresh_div = "main_div"
@refresh_partial = "layouts/gtl"
show
end
@refresh_div = 'main_div' unless @display # Default div for button.rjs to refresh
case params[:pressed]
when 'resource_pool_delete'
deleteresourcepools
if @refresh_div == 'main_div' && @lastaction == 'show_list'
replace_gtl_main_div
else
render_flash unless performed?
end
when 'resource_pool_protect'
assign_policies(ResourcePool)
else
@refresh_div = "main_div" # Default div for button.rjs to refresh
tag(ResourcePool) if params[:pressed] == "resource_pool_tag"
deleteresourcepools if params[:pressed] == "resource_pool_delete"
assign_policies(ResourcePool) if params[:pressed] == "resource_pool_protect"
end

return if %w[resource_pool_tag resource_pool_protect].include?(params[:pressed]) && @flash_array.nil? # Tag screen showing, so return

check_if_button_is_implemented

if single_delete_test
single_delete_redirect
elsif ["#{pfx}_miq_request_new", "#{pfx}_migrate", "#{pfx}_clone",
"#{pfx}_migrate", "#{pfx}_publish"].include?(params[:pressed]) ||
params[:pressed] == 'vm_rename' && @flash_array.nil?
render_or_redirect_partial(pfx)
elsif @refresh_div == "main_div" && @lastaction == "show_list"
replace_gtl_main_div
else
render_flash unless performed?
super
end
end

Expand Down
101 changes: 97 additions & 4 deletions spec/controllers/resource_pool_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,16 +101,109 @@
end

context 'reconfigure VMs' do
before do
controller.instance_variable_set(:@display, 'vms')
controller.params = {:pressed => 'vm_reconfigure'}
end
before { controller.params = {:pressed => 'vm_reconfigure'} }

it 'calls vm_reconfigure' do
expect(controller).to receive(:vm_reconfigure)
controller.send(:button)
end
end

context 'Refresh Relationships and Power States of a VM' do
before { controller.params = {:pressed => 'vm_refresh'} }

it 'calls refreshvms' do
expect(controller).to receive(:refreshvms)
controller.send(:button)
end
end

context 'SmartState Analysis for a VM' do
before do
allow(controller).to receive(:nested_list)
allow(controller).to receive(:performed?).and_return(true)
allow(controller).to receive(:redirect_to)
controller.params = {:pressed => 'vm_scan'}
end

it 'calls refreshvms' do
expect(controller).to receive(:scanvms)
controller.send(:button)
end
end

context 'deleting Resource Pool' do
before do
allow(controller).to receive(:performed?).and_return(true)
controller.instance_variable_set(:@lastaction, 'show_list')
controller.instance_variable_set(:@display, nil)
controller.params = {:pressed => 'resource_pool_delete'}
end

it 'calls deleteresourcepools and replace_gtl_main_div' do
expect(controller).to receive(:deleteresourcepools)
expect(controller).to receive(:replace_gtl_main_div)
controller.send(:button)
end

context 'default div to refresh' do
before do
allow(controller).to receive(:deleteresourcepools)
allow(controller).to receive(:replace_gtl_main_div)
end

it 'sets @refresh_div to main div' do
controller.send(:button)
expect(controller.instance_variable_get(:@refresh_div)).to eq('main_div')
end
end

context 'nested list of Resource Pools' do
before do
allow(controller).to receive(:performed?).and_return(false)
controller.instance_variable_set(:@display, 'resource_pools')
end

it 'calls deleteresourcepools and render_flash' do
expect(controller).to receive(:deleteresourcepools)
expect(controller).to receive(:render_flash)
controller.send(:button)
end
end
end

context 'managing policies of Resource Pools' do
before do
controller.instance_variable_set(:@display, nil)
controller.params = {:pressed => 'resource_pool_protect'}
end

it 'calls assign_policies' do
expect(controller).to receive(:assign_policies).with(ResourcePool)
controller.send(:button)
end

context 'default div to refresh' do
before { allow(controller).to receive(:assign_policies) }

it 'sets @refresh_div to main div' do
controller.send(:button)
expect(controller.instance_variable_get(:@refresh_div)).to eq('main_div')
end
end
end

context 'tagging Resource Pool' do
before do
controller.instance_variable_set(:@display, nil)
controller.params = {:pressed => 'resource_pool_tag'}
end

it 'calls tag method' do
expect(controller).to receive(:tag).with(ResourcePool)
controller.send(:button)
end
end
end

describe "#show" do
Expand Down

0 comments on commit c7630c4

Please sign in to comment.