29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/fog/kubevirt/compute/models/vm_base.rb', line 29
def parse_object(object)
metadata = object[:metadata]
spec = object[:spec][:template][:spec]
domain = spec[:domain]
owner = metadata[:ownerReferences]
annotations = metadata[:annotations]
cpu = object[:cpu_cores] || domain.dig(:cpu, :cores)
mem = object[:memory] || domain.dig(:resources, :requests, :memory) || domain.dig(:memory, :guest)
disks = parse_disks(domain[:devices][:disks])
networks = parse_networks(spec[:networks])
volume_templates = object[:spec][:dataVolumeTemplates]
vm = {
:namespace => metadata[:namespace],
:name => metadata[:name],
:resource_version => metadata[:resourceVersion],
:uid => metadata[:uid],
:labels => metadata[:labels],
:disks => disks,
:volumes => parse_volumes(spec[:volumes], disks),
:status => parse_status(object, :printableStatus),
:interfaces => parse_interfaces(domain[:devices][:interfaces], object[:status].nil? ? [] : object[:status][:interfaces], networks),
:networks => networks,
:machine_type => domain.dig(:machine, :type)
}
vm[:owner_reference] = owner unless owner.nil?
vm[:annotations] = annotations unless annotations.nil?
vm[:cpu_cores] = cpu unless cpu.nil?
vm[:memory] = mem unless mem.nil?
vm[:volume_templates] = volume_templates unless volume_templates.nil?
vm
end
|