@@ -7,26 +7,25 @@ def attach_data_disk_to_vm(disk_params, async)
77 # Variable un-packing for easy access
88 vm_name = disk_params [ :vm_name ]
99 vm_resource_group = disk_params [ :vm_resource_group ]
10- disk_name = disk_params [ :disk_name ]
10+ disk_names = disk_params [ :disk_name ]
1111 disk_resource_group = disk_params [ :disk_resource_group ]
1212 disk_size = disk_params [ :disk_size_gb ]
1313 storage_account_name = disk_params [ :storage_account_name ]
1414
15- msg = "Attaching Data Disk #{ disk_name } to Virtual Machine #{ vm_name } in Resource Group #{ vm_resource_group } "
15+ disk_names = disk_names . is_a? ( Array ) ? disk_names : [ disk_names ]
16+
17+ msg = "Attaching Data Disk #{ disk_names . join ( ', ' ) } to Virtual Machine #{ vm_name } in Resource Group #{ vm_resource_group } "
1618 Fog ::Logger . debug msg
1719 vm = get_virtual_machine_instance ( vm_resource_group , vm_name )
1820 lun = get_logical_unit_number ( vm . storage_profile . data_disks )
21+ access_key = get_storage_access_key ( vm_resource_group , storage_account_name ) if storage_account_name
22+
23+ data_disks = get_list_data_disks ( disk_names , disk_size , lun , storage_account_name , access_key , disk_resource_group )
1924
20- # Attach data disk to VM
21- if storage_account_name
22- # Un-managed data disk
23- access_key = get_storage_access_key ( vm_resource_group , storage_account_name )
24- data_disk = get_unmanaged_disk_object ( disk_name , disk_size , lun , storage_account_name , access_key )
25- elsif disk_resource_group
26- # Managed data disk
27- data_disk = get_data_disk_object ( disk_resource_group , disk_name , lun )
25+ data_disks . each do |data_disk |
26+ vm . storage_profile . data_disks . push ( data_disk )
2827 end
29- vm . storage_profile . data_disks . push ( data_disk )
28+
3029 begin
3130 if async
3231 response = @compute_mgmt_client . virtual_machines . create_or_update_async ( vm_resource_group , vm_name , vm )
@@ -43,13 +42,29 @@ def attach_data_disk_to_vm(disk_params, async)
4342 if async
4443 response
4544 else
46- Fog ::Logger . debug "Data Disk #{ disk_name } attached to Virtual Machine #{ vm_name } successfully."
45+ Fog ::Logger . debug "Data Disk #{ disk_names . join ( ', ' ) } attached to Virtual Machine #{ vm_name } successfully."
4746 virtual_machine
4847 end
4948 end
5049
5150 private
5251
52+ def get_list_data_disks ( disk_names , disk_size , lun , storage_account_name , access_key , disk_resource_group )
53+ data_disks = [ ]
54+ disk_names . each do |disk_name |
55+ # Attach data disk to VM
56+ if storage_account_name
57+ # Un-managed data disk
58+ data_disk = get_unmanaged_disk_object ( disk_name , disk_size , lun , storage_account_name , access_key )
59+ elsif disk_resource_group
60+ # Managed data disk
61+ data_disk = get_data_disk_object ( disk_resource_group , disk_name , lun )
62+ end
63+ data_disks += [ data_disk ]
64+ end
65+ data_disks
66+ end
67+
5368 def get_virtual_machine_instance ( resource_group , vm_name )
5469 msg = "Getting Virtual Machine #{ vm_name } from Resource Group #{ resource_group } "
5570 Fog ::Logger . debug msg
0 commit comments