Skip to content

Commit

Permalink
Refactor finish_retirement method for Service Retirement.
Browse files Browse the repository at this point in the history
This PR is based on the issue below.
ManageIQ/manageiq#12038

@miq-bot add_label refactoring
@miq-bot assign @tinaafitz

Added test for retirement_state equal 'retired'
Changed to use a service method
  • Loading branch information
billfitzgerald0120 committed Nov 13, 2019
1 parent e1690ea commit 2b526ef
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,41 @@
# Description: This method marks the service as retired
#

service = $evm.root['service']
service.finish_retirement if service
$evm.create_notification(:type => :service_retired, :subject => service) if service
module ManageIQ
module Automate
module Service
module Retirement
module StateMachines
module Methods
class FinishRetirement
def initialize(handle = $evm)
@handle = handle
end

def main
finish_retirement(service)
end

private

def service
@handle.root["service"].tap do |service|
@handle.log(:warn, "Service Object not found") if service.nil?
end
end

def finish_retirement(service)
if service
service.finish_retirement
@handle.create_notification(:type => :service_retired, :subject => service)
end
end
end
end
end
end
end
end
end

ManageIQ::Automate::Service::Retirement::StateMachines::Methods::FinishRetirement.new.main
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
require_domain_file

describe ManageIQ::Automate::Service::Retirement::StateMachines::Methods::FinishRetirement do
let(:admin) { FactoryBot.create(:user_admin) }
let(:request) { FactoryBot.create(:service_retire_request, :requester => admin) }
let(:service) { FactoryBot.create(:service, 'retirement_state' => 'retired') }
let(:task) { FactoryBot.create(:service_retire_task, :destination => service, :miq_request => request) }
let(:svc_task) { MiqAeMethodService::MiqAeServiceServiceRetireTask.find(task.id) }
let(:svc_service) { MiqAeMethodService::MiqAeServiceService.find(service.id) }
let(:root_object) do
Spec::Support::MiqAeMockObject.new('service' => svc_service,
'service_retire_task' => svc_task,
'service_action' => 'Retirement')
end
let(:ae_service) { Spec::Support::MiqAeMockService.new(root_object) }

it "without service" do
ae_service.root['service'] = nil
expect(ae_service).not_to receive(:create_notification)
expect { described_class.new(ae_service).main }.not_to raise_error
end

it "retires vm" do
expect(svc_service).to receive(:finish_retirement)
expect(ae_service).to receive(:create_notification).with(:type => :service_retired, :subject => svc_service)
described_class.new(ae_service).main
expect(service.retirement_state).to eq("retired")
end
end

0 comments on commit 2b526ef

Please sign in to comment.