mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
111 lines
3.8 KiB
Ruby
111 lines
3.8 KiB
Ruby
module Fog
|
|
module Parsers
|
|
module Voxel
|
|
module Compute
|
|
|
|
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
|