From aaf998e6b2b40503725fe35e9df75358f5eb99b2 Mon Sep 17 00:00:00 2001 From: Tina Fitzgerald Date: Wed, 7 Jun 2017 12:47:15 -0400 Subject: [PATCH] Check status to determine return value. https://bugzilla.redhat.com/show_bug.cgi?id=1422961 --- .../miq_ae_service_vm_migrate_task.rb | 2 +- ...ers-vmware-infra_manager-provision_spec.rb | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/lib/miq_automation_engine/service_models/miq_ae_service_vm_migrate_task.rb b/lib/miq_automation_engine/service_models/miq_ae_service_vm_migrate_task.rb index 9d21b6743..879c6b133 100644 --- a/lib/miq_automation_engine/service_models/miq_ae_service_vm_migrate_task.rb +++ b/lib/miq_automation_engine/service_models/miq_ae_service_vm_migrate_task.rb @@ -3,7 +3,7 @@ class MiqAeServiceVmMigrateTask < MiqAeServiceMiqRequestTask def statemachine_task_status ar_method do if ['finished', 'migrated'].include?(@object.state) - 'ok' + @object.status.to_s.downcase == 'error' ? 'error' : 'ok' else 'retry' end diff --git a/spec/service_models/miq_ae_service_manageiq-providers-vmware-infra_manager-provision_spec.rb b/spec/service_models/miq_ae_service_manageiq-providers-vmware-infra_manager-provision_spec.rb index 9527b977e..b456caee0 100644 --- a/spec/service_models/miq_ae_service_manageiq-providers-vmware-infra_manager-provision_spec.rb +++ b/spec/service_models/miq_ae_service_manageiq-providers-vmware-infra_manager-provision_spec.rb @@ -190,6 +190,56 @@ def invoke_ae end end + context "vm_migrate_task.statemachine_task_status" do + let(:ae_svc_prov) { MiqAeMethodService::MiqAeServiceVmMigrateTask.find(miq_provision.id) } + + shared_examples_for "#statemachine_task_status" do + it "runs successfully" do + expect(ae_svc_prov.statemachine_task_status).to eq(return_status) + end + end + + context "returns ok for finished/ok" do + let(:return_status) { "ok" } + let(:miq_provision) do + FactoryGirl.create(:vm_migrate_task, :status => "Ok", :state => "finished") + end + it_behaves_like "#statemachine_task_status" + end + + context "returns error for finished/error" do + let(:return_status) { "error" } + let(:miq_provision) do + FactoryGirl.create(:vm_migrate_task, :status => "Error", :state => "finished") + end + it_behaves_like "#statemachine_task_status" + end + + context "returns ok for migrated/ok" do + let(:return_status) { "ok" } + let(:miq_provision) do + FactoryGirl.create(:vm_migrate_task, :status => "Ok", :state => "migrated") + end + it_behaves_like "#statemachine_task_status" + end + + context "returns error for migrated/error" do + let(:return_status) { "error" } + let(:miq_provision) do + FactoryGirl.create(:vm_migrate_task, :status => "Error", :state => "migrated") + end + it_behaves_like "#statemachine_task_status" + end + + context "returns retry for pending" do + let(:return_status) { "retry" } + let(:miq_provision) do + FactoryGirl.create(:vm_migrate_task, :state => "pending") + end + it_behaves_like "#statemachine_task_status" + end + end + context "subclassing" do before do method = "$evm.root['#{@ae_result_key}'] = $evm.root['miq_provision']"