fog-openstack
fog-openstack copied to clipboard
Cannot get volume usage from metering get_usage / list_usage method
I tried to get the usage data from 'metering > get_usage', however, I can only get the instance usage.
My colleague originally used "metering > list_resources" method to grab the event of each volume, then calculate the time diff between start and end, then add them up, like this :
volume_resource_list = @cloud.connection.list_resources.data[:body].select { |i| (i['metadata']['event_type'] || '')[/volume/] }
volume_resource_list.each do |vr|
if vr["metadata"]["status"] == "deleting"
if (Time.parse(vr["last_sample_timestamp"]) < Time.parse(end_day)) && (Time.parse(vr["last_sample_timestamp"]) > Time.parse(start_day))
if Time.parse(vr["metadata"]["launched_at"]) > Time.parse(start_day)
usage = Time.parse(vr["last_sample_timestamp"]) - Time.parse(vr["metadata"]["launched_at"])
else
usage = Time.parse(vr["last_sample_timestamp"]) - Time.parse(start_day)
end
elsif Time.parse(vr["last_sample_timestamp"]) > Time.parse(end_day)
if (Time.parse(vr["metadata"]["launched_at"]) > Time.parse(start_day)) && (Time.parse(vr["metadata"]["launched_at"]) < Time.parse(end_day))
usage = Time.parse(end_day) - Time.parse(vr["metadata"]["launched_at"])
else
usage = 24 * 3600
end
end
elsif vr["metadata"]["status"] == "available"
if (Time.parse(vr["metadata"]["launched_at"]) < Time.parse(end_day)) && (Time.parse(vr["metadata"]["launched_at"]) > Time.parse(start_day))
usage = Time.parse(end_day) - Time.parse(vr["metadata"]["launched_at"])
elsif Time.parse(vr["metadata"]["launched_at"]) < Time.parse(start_day)
usage = 24 * 3600
end
end
end
Now it seems the event data is missing, so I am thinking how I can get those data for the updated version. Can anyone help ?