Class: MiqAzureVm
Instance Attribute Summary
Attributes inherited from MiqVm
#diskInitErrors, #rhevm, #rhevmVm, #vim, #vimVm, #vmConfig, #vmConfigFile, #wholeDisks
Instance Method Summary
collapse
Methods inherited from MiqVm
#applianceVolumeManager, #extract, #miq_extract, #rootTrees, #snapshots, #unmount, #vmDisks, #volumeManager
Constructor Details
#initialize(azure_handle, args) ⇒ MiqAzureVm
Returns a new instance of MiqAzureVm.
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/MiqVm/miq_azure_vm.rb', line 7
def initialize(azure_handle, args)
@azure_handle = azure_handle
@uri = nil
@disk_name = nil
@resource_group = args[:resource_group]
@managed_image = args[:managed_image]
raise ArgumentError, "MiqAzureVm: missing required arg :name" unless (@name = args[:name])
if args[:image_uri]
@uri = args[:image_uri]
elsif args[:managed_image]
@disk_name = args[:managed_image]
elsif args[:resource_group] && args[:name]
vm_obj = vm_svc.get(@name, @resource_group)
os_disk = vm_obj.properties.storage_profile.os_disk
if vm_obj.managed_disk?
raise ArgumentError, "MiqAzureVm: missing required arg :snapshot for Managed Disk" unless (@disk_name = args[:snapshot])
else
@uri = os_disk.vhd.uri
@uri << "?snapshot=#{args[:snapshot]}" if args[:snapshot]
end
else
raise ArgumentError, "MiqAzureVm: missing required args: :image_uri or :resource_group"
end
super(getCfg)
end
|
Instance Method Details
#disk_svc ⇒ Object
126
127
128
|
# File 'lib/MiqVm/miq_azure_vm.rb', line 126
def disk_svc
@disk_svc ||= Azure::Armrest::Storage::DiskService.new(@azure_handle)
end
|
#getCfg ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/MiqVm/miq_azure_vm.rb', line 42
def getCfg
cfg_hash = {}
cfg_hash['displayname'] = @name
file_name = @uri ? @uri : @disk_name
$log.debug("MiqAzureVm#getCfg: disk = #{file_name}")
tag = "scsi0:0"
cfg_hash["#{tag}.present"] = "true"
cfg_hash["#{tag}.devicetype"] = "disk"
cfg_hash["#{tag}.filename"] = file_name
cfg_hash
end
|
#open_disks_info(disk_tag, disk_file) ⇒ Object
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/MiqVm/miq_azure_vm.rb', line 103
def open_disks_info(disk_tag, disk_file)
disk_info = OpenStruct.new
disk_info.fileName = disk_file
disk_info.hardwareId = disk_tag
disk_format = @vmConfig.getHash["#{disk_tag}.format"]
disk_info.format = disk_format unless disk_format.blank?
disk_info.rawDisk = true
disk_info.resource_group = @resource_group
disk_info
end
|
#openDisks(diskFiles) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# File 'lib/MiqVm/miq_azure_vm.rb', line 57
def openDisks(diskFiles)
p_volumes = []
$log.debug("openDisks: #{diskFiles.size} disk files supplied.")
diskFiles.each do |dtag, df|
$log.debug "openDisks: processing disk file (#{dtag}): #{df}"
d_info = open_disks_info(dtag, df)
begin
if @uri
d = MiqDiskCache.new(AzureBlobDisk.new(sa_svc, @uri, d_info), 100, 128)
elsif @managed_image
d = MiqDiskCache.new(AzureManagedDisk.new(disk_svc, @disk_name, d_info), 200, 512)
else
d = MiqDiskCache.new(AzureManagedDisk.new(snap_svc, @disk_name, d_info), 200, 512)
end
rescue => err
$log.error("#{err}: Couldn't open disk file: #{df}")
$log.debug err.backtrace.join("\n")
@diskInitErrors[df] = err.to_s
next
end
@wholeDisks << d
p = d.getPartitions
if p.empty?
p_volumes << d
else
p_volumes.concat(p)
end
end
p_volumes
end
|
#sa_svc ⇒ Object
118
119
120
|
# File 'lib/MiqVm/miq_azure_vm.rb', line 118
def sa_svc
@sa_svc ||= Azure::Armrest::StorageAccountService.new(@azure_handle)
end
|
#snap_svc ⇒ Object
122
123
124
|
# File 'lib/MiqVm/miq_azure_vm.rb', line 122
def snap_svc
@snap_svc ||= Azure::Armrest::Storage::SnapshotService.new(@azure_handle)
end
|
#vm_svc ⇒ Object
114
115
116
|
# File 'lib/MiqVm/miq_azure_vm.rb', line 114
def vm_svc
@vm_svc ||= Azure::Armrest::VirtualMachineService.new(@azure_handle)
end
|