Skip to content

Commit 8549dad

Browse files
committed
Enhance request detach disk to take more than one disk
1 parent 1fde7d8 commit 8549dad

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@ module Compute
33
class AzureRM
44
# This class provides the actual implementation for service calls.
55
class Real
6-
def detach_data_disk_from_vm(resource_group, vm_name, disk_name, async)
7-
msg = "Detaching Data Disk #{disk_name} from Virtual Machine #{vm_name} in Resource Group #{resource_group}."
6+
def detach_data_disk_from_vm(resource_group, vm_name, disk_names, async)
7+
disk_names = disk_names.is_a?(Array) ? disk_names : [disk_names]
8+
msg = "Detaching Data Disk #{disk_names.join(', ')} from Virtual Machine #{vm_name} in Resource Group #{resource_group}."
89
Fog::Logger.debug msg
910
vm = get_virtual_machine_instance(resource_group, vm_name)
10-
vm.storage_profile.data_disks.each_with_index do |disk, index|
11-
if disk.name == disk_name
12-
vm.storage_profile.data_disks.delete_at(index)
13-
end
14-
end
11+
vm.storage_profile.data_disks.delete_if {|disk| disk_names.include? disk.name }
1512
begin
1613
if async
1714
response = @compute_mgmt_client.virtual_machines.create_or_update_async(resource_group, vm_name, vm)
@@ -24,7 +21,7 @@ def detach_data_disk_from_vm(resource_group, vm_name, disk_name, async)
2421
if async
2522
response
2623
else
27-
Fog::Logger.debug "Data Disk #{disk_name} detached from Virtual Machine #{vm_name} successfully."
24+
Fog::Logger.debug "Data Disk #{disk_names.join(', ')} detached from Virtual Machine #{vm_name} successfully."
2825
virtual_machine
2926
end
3027
end

test/requests/compute/test_detach_data_disk_from_vm.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ def test_detach_data_disk_from_vm_success
1818
end
1919
end
2020

21+
def test_detach_multiple_data_disks_from_vm_success
22+
get_vm_response = ApiStub::Requests::Compute::VirtualMachine.create_virtual_machine_response(@compute_client)
23+
update_vm_response = ApiStub::Requests::Compute::VirtualMachine.detach_data_disk_from_vm_response(@compute_client)
24+
@virtual_machines.stub :get, get_vm_response do
25+
@virtual_machines.stub :create_or_update, update_vm_response do
26+
assert_equal @service.detach_data_disk_from_vm('fog-test-rg', 'fog-test-vm', %w(mydatadisk1 mydatadisk2), false), update_vm_response
27+
end
28+
end
29+
end
30+
2131
def test_detach_data_disk_from_vm_failure
2232
get_vm_response = ApiStub::Requests::Compute::VirtualMachine.create_virtual_machine_response(@compute_client)
2333
update_vm_response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }

0 commit comments

Comments
 (0)