From 434a5639462bfa5801bdf06885a10eb868963651 Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Tue, 29 Oct 2019 15:19:53 -0400 Subject: [PATCH] Merge pull request #463 from thearifismail/bug1760040 [V2V] Added support query for warm migration (cherry picked from commit 9d595b87b765f39c7fa046859d53f4c8e1403c0b) https://bugzilla.redhat.com/show_bug.cgi?id=1790538 --- .../manageiq/providers/vmware/infra_manager/vm.rb | 4 ++++ .../providers/vmware/infra_manager/vm_spec.rb | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/app/models/manageiq/providers/vmware/infra_manager/vm.rb b/app/models/manageiq/providers/vmware/infra_manager/vm.rb index 552b3fdef..69d45898a 100644 --- a/app/models/manageiq/providers/vmware/infra_manager/vm.rb +++ b/app/models/manageiq/providers/vmware/infra_manager/vm.rb @@ -9,6 +9,10 @@ class ManageIQ::Providers::Vmware::InfraManager::Vm < ManageIQ::Providers::Infra unsupported_reason_add(:clone, _('Clone operation is not supported')) if blank? || orphaned? || archived? end + supports :warm_migrate do + unsupported_reason_add(:warm_migrate, _('Warm migratiobn can not migrate a VM with snapshots')) if snapshots.present? + end + supports :reconfigure_disks supports :reconfigure_network_adapters supports :reconfigure_disksize do diff --git a/spec/models/manageiq/providers/vmware/infra_manager/vm_spec.rb b/spec/models/manageiq/providers/vmware/infra_manager/vm_spec.rb index ece934f7a..42a4f1315 100644 --- a/spec/models/manageiq/providers/vmware/infra_manager/vm_spec.rb +++ b/spec/models/manageiq/providers/vmware/infra_manager/vm_spec.rb @@ -1,4 +1,6 @@ describe ManageIQ::Providers::Vmware::InfraManager::Vm do + before { EvmSpecHelper.local_miq_server } # required for creating snapshots needed for warm migrate tests + let(:ems) { FactoryBot.create(:ems_vmware) } let(:host) { FactoryBot.create(:host_vmware_esx, :ext_management_system => ems) } let(:vm) { FactoryBot.create(:vm_vmware, :ext_management_system => ems, :host => host) } @@ -43,6 +45,17 @@ end end + context "supports_warm_migrate?" do + it "returns true" do + expect(vm.supports?(:warm_migrate)).to eq(true) + end + + it "returns false" do + FactoryBot.create_list(:snapshot, 2, :create_time => 1.minute.ago, :vm_or_template => vm) + expect(vm.supports?(:warm_migrate)).to eq(false) + end + end + context "supports_shutdown_guest?" do let(:op) { 'shutdown_guest' }