lib/fog/parsers/terremark/get_vdc.rb
module Fog
module Parsers
module Terremark
class GetVdc < Base
def reset
@in_storage_capacity = false
@in_cpu = false
@in_memory = false
@in_instantiated_vms_quota = false
@in_deployed_vms_quota = false
@response = {
"links" => [],
"AvailableNetworks" => [],
"ComputeCapacity" => {
"Cpu" => {},
"DeployedVmsQuota" => {},
"InstantiatedVmsQuota" => {},
"Memory" => {}
},
"StorageCapacity" => {},
"ResourceEntities" => []
}
end
def start_element(name, attributes)
super
case name
when "Cpu"
@in_cpu = true
when "DeployedVmsQuota"
@in_deployed_vms_quota = true
when "InstantiatedVmsQuota"
@in_instantiated_vms_quota = true
when "Link"
link = extract_attributes(attributes)
@response["links"] << link
when "Memory"
@in_memory = true
when "Network"
network = extract_attributes(attributes)
@response["AvailableNetworks"] << network
when "ResourceEntity"
resource_entity = extract_attributes(attributes)
@response["ResourceEntities"] << resource_entity
when "StorageCapacity"
@in_storage_capacity = true
when "Vdc"
vdc = extract_attributes(attributes)
@response["href"] = vdc["href"]
@response["name"] = vdc["name"]
end
end
def end_element(name)
case name
when "Allocated", "Limit", "Units", "Used"
if @in_cpu
@response["ComputeCapacity"]["Cpu"][name] = value
elsif @in_deployed_vms_quota
@response["ComputeCapacity"]["DeployedVmsQuota"][name] = value
elsif @in_instantiated_vms_quota
@response["ComputeCapacity"]["InstantiatedVmsQuota"][name] = value
elsif @in_memory
@response["ComputeCapacity"]["Memory"][name] = value
elsif @in_storage_capacity
@response["StorageCapacity"][name] = value
end
when "Cpu"
@in_cpu = false
when "DeployedVmsQuota"
@in_deployed_vms_quota = false
when "InstantiatedVmsQuota"
@in_instantiated_vms_quota = false
when "Memory"
@in_memory = false
when "StorageCapacity"
@in_storage_capacity = false
when "Type"
@response[name] = value
end
end
end
end
end
end