1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/voxel/parsers/compute/devices_list.rb

111 lines
3.8 KiB
Ruby

module Fog
module Parsers
module Compute
module Voxel
class DevicesList < Fog::Parsers::Base
def reset
@device = {}
@response = { 'devices' => [] }
@in_storage = false
end
def start_element(name, attrs = [])
super
case name
when 'accessmethod'
@access_method = { 'type' => attr_value('type', attrs) }
when 'accessmethods'
@device['access_methods'] = []
when 'device'
@device = {
'id' => attr_value('id', attrs),
'label' => attr_value('label', attrs),
'status' => attr_value('status', attrs)
}
when 'err'
@response['err'] = {
'code' => attr_value('code', attrs),
'msg' => attr_value('msg', attrs)
}
when 'cage', 'facility', 'rack', 'row', 'zone'
@device['location'][name] = { 'id' => attr_value('id', attrs) }
if code = attr_value('code', attrs)
@device['location'][name]['code'] = code
end
when 'drive'
@drive = { 'position' => attr_value('position', attrs) }
when 'ipassignment'
type = attr_value('type', attrs)
@device['ipassignments'] = []
@device['ipassignments'] << {
'id' => attr_value('id', attrs),
'type' => attr_value('type', attrs),
'description' => attr_value('description', attrs),
}
when 'ipassignments'
@device['ipassignments'] = {}
when 'location'
@device['location'] = {}
when 'memory'
@device['memory'] = { 'size' => attr_value('size', attrs).to_i }
when 'model', 'type'
@device[name] = { 'id' => attr_value('id', attrs) }
when 'operating_system'
@device['operating_system'] = {}
when 'power_consumption'
@device[name] = attr_value('unit', attrs)
when 'processor'
@device['processor'] = {}
when 'rsp'
@response['stat'] = attr_value('stat', attrs)
when 'storage'
@device['drives'] = []
end
end
def end_element(name)
case name
when 'access_method'
@device['access_methods'] << @access_method
when 'architecture'
@device['operating_system'][name] = value.to_i
when 'cage', 'facility', 'rack', 'row', 'zone'
@device['location'][name]['value'] = value
when 'cores'
@device['processor'][name] = value.to_i
when 'description'
@device[name] = value
when 'device'
@response['devices'] << @device
@device = {}
when 'drive'
@device['drives'] << @drive
@drive = {}
when 'cores'
@device['processing_cores'] = value.to_i
when 'ipassignment'
@device['ipassignments'].last['value'] = value
when 'model', 'type'
@device[name]['value'] = value
when 'name'
@device['operating_system'][name] = value
when 'position'
@device['location'][name] = value
when 'power_consumption'
@device[name] = [value, @device[name]].join(' ')
when 'size'
@drive[name] = value.to_i
when 'host', 'password', 'protocol', 'username'
@access_method[name] = value
end
end
end
end
end
end
end