@@ -7,26 +7,25 @@ def attach_data_disk_to_vm(disk_params, async)
7
7
# Variable un-packing for easy access
8
8
vm_name = disk_params [ :vm_name ]
9
9
vm_resource_group = disk_params [ :vm_resource_group ]
10
- disk_name = disk_params [ :disk_name ]
10
+ disk_names = disk_params [ :disk_name ]
11
11
disk_resource_group = disk_params [ :disk_resource_group ]
12
12
disk_size = disk_params [ :disk_size_gb ]
13
13
storage_account_name = disk_params [ :storage_account_name ]
14
14
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 } "
16
18
Fog ::Logger . debug msg
17
19
vm = get_virtual_machine_instance ( vm_resource_group , vm_name )
18
20
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 )
19
24
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 )
28
27
end
29
- vm . storage_profile . data_disks . push ( data_disk )
28
+
30
29
begin
31
30
if async
32
31
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)
43
42
if async
44
43
response
45
44
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."
47
46
virtual_machine
48
47
end
49
48
end
50
49
51
50
private
52
51
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
+
53
68
def get_virtual_machine_instance ( resource_group , vm_name )
54
69
msg = "Getting Virtual Machine #{ vm_name } from Resource Group #{ resource_group } "
55
70
Fog ::Logger . debug msg
0 commit comments