Skip to content

Commit

Permalink
Merge pull request #184 from VojkoR/destroy_vm_for_vmware_provider
Browse files Browse the repository at this point in the history
Added support for VM delete
(cherry picked from commit 1dfa303)

https://bugzilla.redhat.com/show_bug.cgi?id=1552683
  • Loading branch information
agrare authored and simaishi committed Mar 7, 2018
1 parent 9c749b5 commit fa49cf6
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
6 changes: 6 additions & 0 deletions app/models/manageiq/providers/vmware/cloud_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,10 @@ def vm_restart(vm, _options = {})
rescue => err
$vcloud_log.error("vm=[#{vm.name}], error: #{err}")
end

def vm_destroy(vm, _options = {})
vm.vm_destroy
rescue => err
$vcloud_log.error("vm=[#{vm.name}], error: #{err}")
end
end
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
module ManageIQ::Providers::Vmware::CloudManager::Vm::Operations
extend ActiveSupport::Concern

include_concern 'Power'

included do
supports :terminate do
unsupported_reason_add(:terminate, "The VM is powered on") unless current_state == "off"
end
end

def raw_destroy
raise "VM has no #{ui_lookup(:table => "ext_management_systems")}, unable to destroy VM" unless ext_management_system
ext_management_system.with_provider_connection do |service|
response = service.delete_vapp(ems_ref)
service.process_task(response.body)
end
update_attributes!(:raw_power_state => "off")
end
end
15 changes: 15 additions & 0 deletions spec/models/manageiq/providers/vmware/cloud_manager/vm_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,19 @@
include_examples "Vm operation is not available"
end
end

context "when destroyed" do
let(:ems) { FactoryGirl.create(:ems_vmware_cloud) }
let(:vm) { FactoryGirl.create(:vm_vmware_cloud, :ext_management_system => ems) }
let(:connection) { double("connection") }
let(:response) { double("response", :body => nil) }

it "deletes the virtual machine" do
allow(ems).to receive(:with_provider_connection).and_yield(connection)
expect(connection).to receive(:delete_vapp).and_return(response)
expect(connection).to receive(:process_task).and_return(true)

vm.raw_destroy
end
end
end

0 comments on commit fa49cf6

Please sign in to comment.