From 27bfa749a615e2b44de81721aa6934cd998a8453 Mon Sep 17 00:00:00 2001 From: Fabien Dupont Date: Tue, 4 Dec 2018 08:29:20 -0500 Subject: [PATCH] Allow a retry to let virt-v2v start --- .../__methods__/vmchecktransformed.rb | 8 +++++-- .../__methods__/vmchecktransformed_spec.rb | 24 +++++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/content/automate/ManageIQ/Transformation/Common.class/__methods__/vmchecktransformed.rb b/content/automate/ManageIQ/Transformation/Common.class/__methods__/vmchecktransformed.rb index 48340a028..85aedbb1f 100644 --- a/content/automate/ManageIQ/Transformation/Common.class/__methods__/vmchecktransformed.rb +++ b/content/automate/ManageIQ/Transformation/Common.class/__methods__/vmchecktransformed.rb @@ -44,8 +44,12 @@ def main @handle.set_state_var(:ae_state_progress, 'message' => 'Disks transformation succeeded.', 'percent' => 100) end rescue => e - @handle.set_state_var(:ae_state_progress, 'message' => e.message) - raise + if @handle.root['ae_state_retries'] > 1 + @handle.set_state_var(:ae_state_progress, 'message' => e.message) + raise + else + set_retry + end end end end diff --git a/spec/content/automate/ManageIQ/Transformation/Common.class/__methods__/vmchecktransformed_spec.rb b/spec/content/automate/ManageIQ/Transformation/Common.class/__methods__/vmchecktransformed_spec.rb index cbee973a0..d8e2fa065 100644 --- a/spec/content/automate/ManageIQ/Transformation/Common.class/__methods__/vmchecktransformed_spec.rb +++ b/spec/content/automate/ManageIQ/Transformation/Common.class/__methods__/vmchecktransformed_spec.rb @@ -46,6 +46,7 @@ allow(svc_model_task).to receive(:get_option).with(:virtv2v_status).and_return('active') described_class.new(ae_service).main expect(ae_service.get_state_var(:ae_state_progress)).to eq('message' => 'Disks transformation is initializing.', 'percent' => 1.0) + expect(ae_service.root['ae_result']).to eq('retry') end end @@ -63,11 +64,13 @@ allow(svc_model_task).to receive(:get_option).with(:virtv2v_status).and_return('active') described_class.new(ae_service).main expect(ae_service.get_state_var(:ae_state_progress)).to eq('message' => 'Converting disk 2 / 2 [43.75%].', 'percent' => 43.75) + expect(ae_service.root['ae_result']).to eq('retry') end end context "conversion has failed" do it "raises with a message stating conversion has failed" do + ae_service.root['ae_state_retries'] = 2 allow(svc_model_task).to receive(:get_conversion_state).and_return(true) allow(svc_model_task).to receive(:get_option).with(:virtv2v_status).and_return('failed') errormsg = 'Disks transformation failed.' @@ -85,11 +88,22 @@ end end - it "raises if get_conversion_state fails" do - errormsg = 'Unexpected error' - allow(svc_model_task).to receive(:get_conversion_state).and_raise(errormsg) - expect { described_class.new(ae_service).main }.to raise_error(errormsg) - expect(ae_service.get_state_var(:ae_state_progress)).to eq('message' => errormsg) + context "get_conversion_state fails" do + it "sets retry if ae_state_retries is less than or equal to 1" do + errormsg = 'Unexpected error' + allow(svc_model_task).to receive(:get_conversion_state).and_raise(errormsg) + ae_service.root['ae_state_retries'] = 1 + described_class.new(ae_service).main + expect(ae_service.root['ae_result']).to eq('retry') + end + + it "raises if ae_state_retries is greater than 2" do + errormsg = 'Unexpected error' + allow(svc_model_task).to receive(:get_conversion_state).and_raise(errormsg) + ae_service.root['ae_state_retries'] = 2 + expect { described_class.new(ae_service).main }.to raise_error(errormsg) + expect(ae_service.get_state_var(:ae_state_progress)).to eq('message' => errormsg) + end end end end