diff --git a/app/models/miq_request.rb b/app/models/miq_request.rb index 99849847e27a..6d6f2ba71293 100644 --- a/app/models/miq_request.rb +++ b/app/models/miq_request.rb @@ -80,6 +80,12 @@ class MiqRequest < ApplicationRecord :VmRetireRequest => { :vm_retire => N_("VM Retire") }, + :ServiceRetireRequest => { + :service_retire => N_("Service Retire") + }, + :OrchestrationStackRetireRequest => { + :orchestration_stack_retire => N_("Orchestration Stack Retire") + }, :ServiceTemplateProvisionRequest => { :clone_to_service => N_("Service Provision") }, diff --git a/app/models/miq_retire_request.rb b/app/models/miq_retire_request.rb new file mode 100644 index 000000000000..b919c01ce73e --- /dev/null +++ b/app/models/miq_retire_request.rb @@ -0,0 +1,13 @@ +class MiqRetireRequest < MiqRequest + # subclasses must set this + SOURCE_CLASS_NAME = nil + + validates :request_state, :inclusion => { :in => %w(pending finished) + ACTIVE_STATES, :message => "should be pending, #{ACTIVE_STATES.join(", ")} or finished" } + validate :must_have_user + + default_value_for(:source_id) { |r| r.get_option(:src_id) } + default_value_for :source_type, SOURCE_CLASS_NAME + + def my_zone + end +end diff --git a/app/models/miq_retire_task.rb b/app/models/miq_retire_task.rb new file mode 100644 index 000000000000..6cb6d0ca4597 --- /dev/null +++ b/app/models/miq_retire_task.rb @@ -0,0 +1,90 @@ +class MiqRetireTask < MiqRequestTask + validate :validate_request_type, :validate_state + + AUTOMATE_DRIVES = true + + def self.get_description(req_obj) + name = nil + if req_obj.source.nil? + # Single source has not been selected yet + if req_obj.options[:src_ids].length == 1 + m = model_being_retired.find_by(:id => req_obj.options[:src_ids].first) + name = m.nil? ? "" : m.name + else + name = "Multiple " + model_being_retired.to_s.pluralize + end + else + name = req_obj.source.name + end + + new_settings = [] + "#{request_class::TASK_DESCRIPTION} for: #{name} - #{new_settings.join(", ")}" + end + + def deliver_to_automate(req_type = request_type, zone = nil) + task_check_on_delivery + + _log.info("Queuing #{request_class::TASK_DESCRIPTION}: [#{description}]...") + if self.class::AUTOMATE_DRIVES + args = { + :object_type => self.class.name, + :object_id => id, + :attrs => {"request" => req_type}, + :instance_name => "AUTOMATION", + :user_id => 1, + :miq_group_id => 2, + :tenant_id => 1, + } + + args[:attrs].merge!(MiqAeEngine.create_automation_attributes(source.class.base_model.name => source)) + + zone ||= source.respond_to?(:my_zone) ? source.my_zone : MiqServer.my_zone + MiqQueue.put( + :class_name => 'MiqAeEngine', + :method_name => 'deliver', + :args => [args], + :role => 'automate', + :zone => options.fetch(:miq_zone, zone), + :tracking_label => my_task_id, + ) + update_and_notify_parent(:state => "pending", :status => "Ok", :message => "Automation Starting") + else + execute_queue + end + end + + def after_request_task_create + update_attributes(:description, get_description) + end + + def after_ae_delivery(ae_result) + _log.info("ae_result=#{ae_result.inspect}") + reload + + return if ae_result == 'retry' + return if miq_request.state == 'finished' + + if ae_result == 'ok' + update_and_notify_parent(:state => "finished", :status => "Ok", :message => display_message("#{request_class::TASK_DESCRIPTION} completed")) + else + mark_pending_items_as_finished + update_and_notify_parent(:state => "finished", :status => "Error", :message => display_message("#{request_class::TASK_DESCRIPTION} failed")) + end + end + + def before_ae_starts(_options) + reload + if state.to_s.downcase.in?(%w(pending queued)) + _log.info("Executing #{request_class::TASK_DESCRIPTION} request: [#{description}]") + update_and_notify_parent(:state => "active", :status => "Ok", :message => "In Process") + end + end + + def mark_pending_items_as_finished + miq_request.miq_request_tasks.each do |s| + if s.state == 'pending' + s.update_and_notify_parent(:state => "finished", :status => "Warn", :message => "Error in Request: #{miq_request.id}. Setting pending Task: #{id} to finished.") unless id == s.id + end + end + end +end diff --git a/app/models/mixins/retirement_mixin.rb b/app/models/mixins/retirement_mixin.rb index 013b8753b274..61273f64bc0b 100644 --- a/app/models/mixins/retirement_mixin.rb +++ b/app/models/mixins/retirement_mixin.rb @@ -10,6 +10,11 @@ module RetirementMixin end module ClassMethods + def make_retire_request + options = {:task => task, :userid => current_user, :ids => objs, :src_ids => objs} + (klass.to_s + "RetireRequest").constantize.make_request(@request_id, options, current_user) + end + def retire(ids, options = {}) ids.each do |id| object = find_by(:id => id) @@ -117,7 +122,7 @@ def retirement_check end end - retire_now if retirement_due? + make_retire_request if retirement_due? end def retire_now(requester = nil) @@ -125,11 +130,11 @@ def retire_now(requester = nil) return if retired_validated? _log.info("#{retirement_object_title}: [#{name}], Retires On: [#{retires_on.strftime("%x %R %Z")}], was previously retired, but currently #{retired_invalid_reason}") else - _log.info("Creating request for #{self.class.name} #{id}") + update_attributes(:retirement_requester => requester) + event_name = "request_#{retirement_event_prefix}_retire" + _log.info("calling #{event_name}") begin - options = {:src_ids => id} - request_type = (self.class.name.demodulize + "RetireRequest").constantize - request_type.make_request(@request_id, options, User.current_user.try(:userid)) + raise_retirement_event(event_name, requester) rescue => err _log.log_backtrace(err) end diff --git a/app/models/orchestration_stack_retire_request.rb b/app/models/orchestration_stack_retire_request.rb new file mode 100644 index 000000000000..d45ec3187456 --- /dev/null +++ b/app/models/orchestration_stack_retire_request.rb @@ -0,0 +1,4 @@ +class OrchestrationStackRetireRequest < MiqRetireRequest + TASK_DESCRIPTION = 'OrchestrationStack Retire'.freeze + SOURCE_CLASS_NAME = 'OrchestrationStack'.freeze +end diff --git a/app/models/orchestration_stack_retire_task.rb b/app/models/orchestration_stack_retire_task.rb new file mode 100644 index 000000000000..a0b32a5a5986 --- /dev/null +++ b/app/models/orchestration_stack_retire_task.rb @@ -0,0 +1,9 @@ +class OrchestrationStackRetireTask < MiqRetireTask + def self.base_model + OrchestrationStackRetireTask + end + + def self.model_being_retired + OrchestrationStack + end +end diff --git a/app/models/service/retirement_management.rb b/app/models/service/retirement_management.rb index cc2db5109fc4..7059d1fd17b9 100644 --- a/app/models/service/retirement_management.rb +++ b/app/models/service/retirement_management.rb @@ -7,6 +7,8 @@ def before_retirement end def retire_service_resources + # TODO: delete me per https://github.com/ManageIQ/manageiq/pull/16933#discussion_r175805070 + return direct_service_children.each(&:retire_service_resources) service_resources.each do |sr| diff --git a/app/models/service_retire_request.rb b/app/models/service_retire_request.rb index d8ceb5509a05..afd4c3c69d41 100644 --- a/app/models/service_retire_request.rb +++ b/app/models/service_retire_request.rb @@ -1,19 +1,6 @@ -class ServiceRetireRequest < MiqRequest +class ServiceRetireRequest < MiqRetireRequest TASK_DESCRIPTION = 'Service Retire'.freeze SOURCE_CLASS_NAME = 'Service'.freeze - validates :request_state, :inclusion => { :in => %w(pending finished) + ACTIVE_STATES, :message => "should be pending, #{ACTIVE_STATES.join(", ")} or finished" } - - validate :must_have_user delegate :service_template, :to => :source, :allow_nil => true - - default_value_for(:source_id) { |r| r.get_option(:src_id) } - default_value_for :source_type, SOURCE_CLASS_NAME - - def my_role - 'ems_operations' - end - - def my_zone - end end diff --git a/app/models/service_retire_task.rb b/app/models/service_retire_task.rb index fb17573d48aa..70bca689b287 100644 --- a/app/models/service_retire_task.rb +++ b/app/models/service_retire_task.rb @@ -1,88 +1,10 @@ -class ServiceRetireTask < MiqRequestTask - validate :validate_request_type, :validate_state - - AUTOMATE_DRIVES = true - +class ServiceRetireTask < MiqRetireTask def self.base_model ServiceRetireTask end - def self.get_description(req_obj) - name = nil - if req_obj.source.nil? - # Single source has not been selected yet - if req_obj.options[:src_ids].length == 1 - s = Service.find_by(:id => req_obj.options[:src_ids].first) - name = s.nil? ? "" : s.name - else - name = "Multiple Services" - end - else - name = req_obj.source.name - end - - new_settings = [] - "#{request_class::TASK_DESCRIPTION} for: #{name} - #{new_settings.join(", ")}" - end - - def after_request_task_create - update_attribute(:description, get_description) - end - - def after_ae_delivery(ae_result) - _log.info("ae_result=#{ae_result.inspect}") - reload - - return if ae_result == 'retry' - return if miq_request.state == 'finished' - - if ae_result == 'ok' - update_and_notify_parent(:state => "finished", :status => "Ok", :message => display_message("#{request_class::TASK_DESCRIPTION} completed")) - else - mark_pending_items_as_finished - update_and_notify_parent(:state => "finished", :status => "Error", :message => display_message("#{request_class::TASK_DESCRIPTION} failed")) - end - end - - def deliver_to_automate(req_type = request_type, zone = nil) - task_check_on_delivery - - _log.info("Queuing #{request_class::TASK_DESCRIPTION}: [#{description}]...") - - if self.class::AUTOMATE_DRIVES - args = { - :object_type => self.class.name, - :object_id => id, - :attrs => {"request" => req_type}, - :instance_name => "AUTOMATION", - :user_id => get_user.id, - :miq_group_id => get_user.current_group.id, - :tenant_id => get_user.current_tenant.id, - } - - args[:attrs].merge!(MiqAeEngine.create_automation_attributes(source.class.base_model.name => source)) - - zone ||= source.respond_to?(:my_zone) ? source.my_zone : MiqServer.my_zone - MiqQueue.put( - :class_name => 'MiqAeEngine', - :method_name => 'deliver', - :args => [args], - :role => 'automate', - :zone => options.fetch(:miq_zone, zone), - :tracking_label => my_task_id, - ) - update_and_notify_parent(:state => "pending", :status => "Ok", :message => "Automation Starting") - else - execute_queue - end - end - - def before_ae_starts(_options) - reload - if state.to_s.downcase.in?(%w(pending queued)) - _log.info("Executing #{request_class::TASK_DESCRIPTION} request: [#{description}]") - update_and_notify_parent(:state => "active", :status => "Ok", :message => "In Process") - end + def self.model_being_retired + Service end def update_and_notify_parent(*args) @@ -93,12 +15,4 @@ def update_and_notify_parent(*args) def task_finished end - - def mark_pending_items_as_finished - miq_request.miq_request_tasks.each do |s| - if s.state == 'pending' - s.update_and_notify_parent(:state => "finished", :status => "Warn", :message => "Error in Request: #{miq_request.id}. Setting pending Task: #{id} to finished.") unless id == s.id - end - end - end end diff --git a/app/models/vm_retire_request.rb b/app/models/vm_retire_request.rb index 180523623877..8cc69b453339 100644 --- a/app/models/vm_retire_request.rb +++ b/app/models/vm_retire_request.rb @@ -1,17 +1,10 @@ -class VmRetireRequest < MiqRequest +class VmRetireRequest < MiqRetireRequest TASK_DESCRIPTION = 'VM Retire'.freeze SOURCE_CLASS_NAME = 'Vm'.freeze ACTIVE_STATES = %w(retired) + base_class::ACTIVE_STATES - validates :request_state, :inclusion => { :in => %w(pending finished) + ACTIVE_STATES, :message => "should be pending, #{ACTIVE_STATES.join(", ")} or finished" } - validate :must_have_user - def my_zone vm = Vm.find_by(:id => options[:src_ids]) vm.nil? ? super : vm.my_zone end - - def my_role - 'ems_operations' - end end diff --git a/app/models/vm_retire_task.rb b/app/models/vm_retire_task.rb index 4476e2c10e52..730175f3430d 100644 --- a/app/models/vm_retire_task.rb +++ b/app/models/vm_retire_task.rb @@ -1,106 +1,11 @@ -class VmRetireTask < MiqRequestTask +class VmRetireTask < MiqRetireTask alias_attribute :vm, :source - validate :validate_request_type, :validate_state - - AUTOMATE_DRIVES = true - def self.base_model VmRetireTask end - def self.get_description(req_obj) - name = nil - if req_obj.source.nil? - # Single source has not been selected yet - if req_obj.options[:src_ids].length == 1 - v = Vm.find_by(:id => req_obj.options[:src_ids].first) - name = v.nil? ? "" : v.name - else - name = "Multiple VMs" - end - else - name = req_obj.source.name - end - - new_settings = [] - "#{request_class::TASK_DESCRIPTION} for: #{name} - #{new_settings.join(", ")}" - end - - def after_request_task_create - update_attribute(:description, get_description) - end - - def after_ae_delivery(ae_result) - _log.info("ae_result=#{ae_result.inspect}") - reload - - return if ae_result == 'retry' - return if miq_request.state == 'finished' - - if ae_result == 'ok' - update_and_notify_parent(:state => "finished", :status => "Ok", :message => display_message("#{request_class::TASK_DESCRIPTION} completed")) - else - mark_pending_items_as_finished - update_and_notify_parent(:state => "finished", :status => "Error", :message => display_message("#{request_class::TASK_DESCRIPTION} failed")) - end - end - - def deliver_to_automate(req_type = request_type, zone = nil) - task_check_on_delivery - - _log.info("Queuing #{request_class::TASK_DESCRIPTION}: [#{description}]...") - - if self.class::AUTOMATE_DRIVES - args = { - :object_type => self.class.name, - :object_id => id, - :attrs => {"request" => req_type}, - :instance_name => "AUTOMATION", - :user_id => get_user.id, - :miq_group_id => get_user.current_group.id, - :tenant_id => get_user.current_tenant.id, - } - - args[:attrs].merge!(MiqAeEngine.create_automation_attributes(source.class.base_model.name => source)) - - zone ||= source.respond_to?(:my_zone) ? source.my_zone : MiqServer.my_zone - MiqQueue.put( - :class_name => 'MiqAeEngine', - :method_name => 'deliver', - :args => [args], - :role => 'automate', - :zone => options.fetch(:miq_zone, zone), - :tracking_label => my_task_id, - ) - update_and_notify_parent(:state => "pending", :status => "Ok", :message => "Automation Starting") - else - execute_queue - end - end - - def before_ae_starts(_options) - reload - if state.to_s.downcase.in?(%w(pending queued)) - _log.info("Executing #{request_class::TASK_DESCRIPTION} request: [#{description}]") - update_and_notify_parent(:state => "active", :status => "Ok", :message => "In Process") - end - end - - def update_and_notify_parent(*args) - prev_state = state - super - task_finished if state == "finished" && prev_state != "finished" - end - - def task_finished - end - - def mark_pending_items_as_finished - miq_request.miq_request_tasks.each do |s| - if s.state == 'pending' - s.update_and_notify_parent(:state => "finished", :status => "Warn", :message => "Error in Request: #{miq_request.id}. Setting pending Task: #{id} to finished.") unless id == s.id - end - end + def self.model_being_retired + Vm end end diff --git a/spec/factories/orchestration_stack_retire_request.rb b/spec/factories/orchestration_stack_retire_request.rb new file mode 100644 index 000000000000..f0760b981490 --- /dev/null +++ b/spec/factories/orchestration_stack_retire_request.rb @@ -0,0 +1,3 @@ +FactoryGirl.define do + factory :orchestration_stack_retire_request +end diff --git a/spec/factories/orchestration_stack_retire_task.rb b/spec/factories/orchestration_stack_retire_task.rb new file mode 100644 index 000000000000..0b443c4711ec --- /dev/null +++ b/spec/factories/orchestration_stack_retire_task.rb @@ -0,0 +1,3 @@ +FactoryGirl.define do + factory :orchestration_stack_retire_task +end diff --git a/spec/factories/service_retire_request.rb b/spec/factories/service_retire_request.rb new file mode 100644 index 000000000000..bc14c8ecc536 --- /dev/null +++ b/spec/factories/service_retire_request.rb @@ -0,0 +1,3 @@ +FactoryGirl.define do + factory :service_retire_request +end diff --git a/spec/factories/service_retire_task.rb b/spec/factories/service_retire_task.rb new file mode 100644 index 000000000000..c0e5f1323930 --- /dev/null +++ b/spec/factories/service_retire_task.rb @@ -0,0 +1,3 @@ +FactoryGirl.define do + factory :service_retire_task +end diff --git a/spec/models/miq_request_spec.rb b/spec/models/miq_request_spec.rb index 36036ba24680..39d7167ca17e 100644 --- a/spec/models/miq_request_spec.rb +++ b/spec/models/miq_request_spec.rb @@ -7,19 +7,21 @@ context "CONSTANTS" do it "REQUEST_TYPES" do expected_request_types = { - :MiqProvisionRequest => {:template => "VM Provision", :clone_to_vm => "VM Clone", :clone_to_template => "VM Publish"}, - :MiqProvisionRequestTemplate => {:template => "VM Provision Template"}, - :MiqHostProvisionRequest => {:host_pxe_install => "Host Provision"}, - :MiqProvisionConfiguredSystemRequest => {:provision_via_foreman => "#{ui_lookup(:ui_title => 'foreman')} Provision"}, - :VmReconfigureRequest => {:vm_reconfigure => "VM Reconfigure"}, - :VmCloudReconfigureRequest => {:vm_cloud_reconfigure => "VM Cloud Reconfigure"}, - :VmMigrateRequest => {:vm_migrate => "VM Migrate"}, - :VmRetireRequest => {:vm_retire => "VM Retire"}, - :AutomationRequest => {:automation => "Automation"}, - :ServiceTemplateProvisionRequest => {:clone_to_service => "Service Provision"}, - :ServiceReconfigureRequest => {:service_reconfigure => "Service Reconfigure"}, - :PhysicalServerProvisionRequest => {:provision_physical_server => "Physical Server Provision"}, - :ServiceTemplateTransformationPlanRequest => {:transformation_plan => "Transformation Plan"} + :MiqProvisionRequest => {:template => "VM Provision", :clone_to_vm => "VM Clone", :clone_to_template => "VM Publish"}, + :MiqProvisionRequestTemplate => {:template => "VM Provision Template"}, + :MiqHostProvisionRequest => {:host_pxe_install => "Host Provision"}, + :MiqProvisionConfiguredSystemRequest => {:provision_via_foreman => "#{ui_lookup(:ui_title => 'foreman')} Provision"}, + :VmReconfigureRequest => {:vm_reconfigure => "VM Reconfigure"}, + :VmCloudReconfigureRequest => {:vm_cloud_reconfigure => "VM Cloud Reconfigure"}, + :VmMigrateRequest => {:vm_migrate => "VM Migrate"}, + :VmRetireRequest => {:vm_retire => "VM Retire"}, + :ServiceRetireRequest => {:service_retire => "Service Retire"}, + :OrchestrationStackRetireRequest => {:orchestration_stack_retire => "Orchestration Stack Retire"}, + :AutomationRequest => {:automation => "Automation"}, + :ServiceTemplateProvisionRequest => {:clone_to_service => "Service Provision"}, + :ServiceReconfigureRequest => {:service_reconfigure => "Service Reconfigure"}, + :PhysicalServerProvisionRequest => {:provision_physical_server => "Physical Server Provision"}, + :ServiceTemplateTransformationPlanRequest => {:transformation_plan => "Transformation Plan"} } expect(described_class::REQUEST_TYPES).to eq(expected_request_types) diff --git a/spec/models/orchestration_stack/retirement_management_spec.rb b/spec/models/orchestration_stack/retirement_management_spec.rb index 20cfd6b5501a..a681d5894878 100644 --- a/spec/models/orchestration_stack/retirement_management_spec.rb +++ b/spec/models/orchestration_stack/retirement_management_spec.rb @@ -8,7 +8,7 @@ expect(MiqEvent).to receive(:raise_evm_event) @stack.update_attributes(:retires_on => 90.days.ago, :retirement_warn => 60, :retirement_last_warn => nil) expect(@stack.retirement_last_warn).to be_nil - expect_any_instance_of(@stack.class).to receive(:retire_now).once + expect(@stack).to receive(:make_retire_request).once @stack.retirement_check @stack.reload expect(@stack.retirement_last_warn).not_to be_nil @@ -24,7 +24,7 @@ it "#retire_now" do expect(@stack.retirement_state).to be_nil - expect(MiqEvent).to receive(:raise_evm_event).once + expect(OrchestrationStackRetireRequest).to_not receive(:make_request) @stack.retire_now @stack.reload end @@ -35,7 +35,7 @@ event_hash = {:orchestration_stack => @stack, :type => "OrchestrationStack", :retirement_initiator => "user", :userid => "freddy"} - expect(MiqEvent).to receive(:raise_evm_event).with(@stack, event_name, event_hash, {}).once + expect(OrchestrationStackRetireRequest).to_not receive(:make_request) @stack.retire_now('freddy') @stack.reload @@ -47,7 +47,7 @@ event_hash = {:orchestration_stack => @stack, :type => "OrchestrationStack", :retirement_initiator => "system"} - expect(MiqEvent).to receive(:raise_evm_event).with(@stack, event_name, event_hash, {}).once + expect(OrchestrationStackRetireRequest).to_not receive(:make_request) @stack.retire_now @stack.reload diff --git a/spec/models/service/retirement_management_spec.rb b/spec/models/service/retirement_management_spec.rb index 6e1338416b85..f6ca597cb98c 100644 --- a/spec/models/service/retirement_management_spec.rb +++ b/spec/models/service/retirement_management_spec.rb @@ -4,11 +4,12 @@ @service = FactoryGirl.create(:service) end + # shouldn't be running make_retire_request because it's the bimodal not from ui part it "#retirement_check" do expect(MiqEvent).to receive(:raise_evm_event) @service.update_attributes(:retires_on => 90.days.ago, :retirement_warn => 60, :retirement_last_warn => nil) expect(@service.retirement_last_warn).to be_nil - expect_any_instance_of(@service.class).to receive(:retire_now).once + expect(@service).to receive(:make_retire_request).once @service.retirement_check @service.reload expect(@service.retirement_last_warn).not_to be_nil @@ -24,7 +25,7 @@ it "#retire_now" do expect(@service.retirement_state).to be_nil - expect(ServiceRetireRequest).to receive(:make_request).once + expect(MiqEvent).to receive(:raise_evm_event).once @service.retire_now @service.reload end @@ -35,7 +36,7 @@ event_hash = {:service => @service, :type => "Service", :retirement_initiator => "user", :userid => "freddy"} - expect(ServiceRetireRequest).to receive(:make_request).once + expect(MiqEvent).to receive(:raise_evm_event).with(@service, event_name, event_hash, {}).once @service.retire_now('freddy') @service.reload @@ -47,7 +48,7 @@ event_hash = {:service => @service, :type => "Service", :retirement_initiator => "system"} - expect(ServiceRetireRequest).to receive(:make_request).once + expect(MiqEvent).to receive(:raise_evm_event).with(@service, event_name, event_hash, {}).once @service.retire_now @service.reload @@ -76,7 +77,7 @@ vm = FactoryGirl.create(:vm_vmware, :ems_id => ems.id) @service << vm expect(@service.service_resources.size).to eq(1) - expect(@service.service_resources.first.resource).to receive(:retire_now).once + expect(@service.service_resources.first.resource).to_not receive(:retire_now) @service.retire_service_resources end @@ -87,7 +88,7 @@ @service.update_attributes(:retirement_requester => userid) @service << vm expect(@service.service_resources.size).to eq(1) - expect(@service.service_resources.first.resource).to receive(:retire_now).with(userid).once + expect(@service.service_resources.first.resource).to_not receive(:retire_now).with(userid) @service.retire_service_resources end @@ -96,7 +97,7 @@ vm = FactoryGirl.create(:vm_vmware, :ems_id => ems.id) @service << vm expect(@service.service_resources.size).to eq(1) - expect(@service.service_resources.first.resource).to receive(:retire_now).with(nil).once + expect(@service.service_resources.first.resource).to_not receive(:retire_now).with(nil) @service.retire_service_resources end diff --git a/spec/models/vm/retirement_management_spec.rb b/spec/models/vm/retirement_management_spec.rb index b3c422267bb2..ab14fafdc5e9 100644 --- a/spec/models/vm/retirement_management_spec.rb +++ b/spec/models/vm/retirement_management_spec.rb @@ -10,7 +10,7 @@ expect(MiqEvent).to receive(:raise_evm_event).once @vm.update_attributes(:retires_on => 90.days.ago, :retirement_warn => 60, :retirement_last_warn => nil) expect(@vm.retirement_last_warn).to be_nil - expect_any_instance_of(@vm.class).to receive(:retire_now).once + expect(@vm).to receive(:make_retire_request).once @vm.retirement_check @vm.reload expect(@vm.retirement_last_warn).not_to be_nil @@ -26,7 +26,7 @@ end it "#retire_now" do - expect(VmRetireRequest).to receive(:make_request).once + expect(MiqEvent).to receive(:raise_evm_event).once @vm.retire_now end @@ -37,7 +37,7 @@ :retirement_initiator => "user", :userid => 'freddy'} options = {:zone => @zone.name} - expect(VmRetireRequest).to receive(:make_request).once + expect(MiqEvent).to receive(:raise_evm_event).with(@vm, event_name, event_hash, options).once @vm.retire_now('freddy') end @@ -48,7 +48,7 @@ :retirement_initiator => "system"} options = {:zone => @zone.name} - expect(VmRetireRequest).to receive(:make_request).once + expect(MiqEvent).to receive(:raise_evm_event).with(@vm, event_name, event_hash, options).once @vm.retire_now end